华为java题(华为机考练习题Java)(1)

字符串的遍历操作

for(int i = 0; i< s.length(); i ){//遍历字符串

char c = s.charAt(i);//遍历单个字符,char 类型的 索引查询 s.charAt(i);

}

char 这种格式的比较有意思,它可以比较大小,做加减。

char[] charArray = s.toCharArray();

for(char c : charArray){

// do some

}

用HashSet 去重,计数

import java.util.*; public class Main{ //用set 去去重。 public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.next(); Set<Character> set = new HashSet<>(); for(int i = 0; i< s.length(); i ){//遍历字符串 char c = s.charAt(i); set.add(c); } System.out.println(set.size());//set 自动去重,返回集合大小 } }

用容器来保存字符串

StringBuilder sb = new StringBuilder(s); // 初始值为字符串s

遍历也是同样的方法:索引查询 sb.charAt(i);

StringBuilder不是集合或数组。它只是一个提供一些额外功能来使用字符串的类。它没有实现IEnumerable接口。

import java.util.*; public class Main{ //用set 去去重。 public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.next(); StringBuilder sb = new StringBuilder(s); Set<Character> set = new HashSet<>(); for(int i = 0; i< sb.length(); i ){ char c = sb.charAt(i); set.add(c); } System.out.println(set.size()); } }

用HashMap 计数

华为java题(华为机考练习题Java)(2)

package testStr; import java.util.*; public class MainHJ2 { //用hashmap 去count。 public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s1 = sc.nextLine();//这里一定不能是next() String s2 = sc.next();//第二行输入 char c1 = s2.charAt(0); StringBuilder sb = new StringBuilder(s1);//存放字符 Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < sb.length(); i ) { char c = sb.charAt(i); if (map.containsKey(c)) { map.put(c, map.get(c) 1);//存在key ,把value 1 }else{ map.put(c, 1);//第一次加入,value 为1 } } System.out.println(Arrays.toString(map.entrySet().toArray())); int res = 0;//结果个数 if (map.containsKey(c1)) { res = map.get(c1); } System.out.println(res); } }

ide 测试结果:这是区分大小写的,不和题意;

华为java题(华为机考练习题Java)(3)

加一个大小写转行命令就ok了

import java.util.*; public class Main { //用hashmap 去count。区分大小写的解法 public static void main(String[] args) { //处理输入 Scanner sc = new Scanner(System.in); String s1 = sc.nextLine(); String lowS1 = s1.toLowerCase();//都小写吧 String s2 = sc.next(); String lowS2= s2.toLowerCase(); char c1 = lowS2.charAt(0); Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < lowS1.length(); i ) { char c = lowS1.charAt(i); if (map.containsKey(c)) { map.put(c, map.get(c) 1);//存在key ,把value 1 }else{ map.put(c, 1);//第一次加入,value 为1 } } // System.out.println(Arrays.toString(map.entrySet().toArray()));打印map ,方便ide试 int res = 0;//结果个数 if (map.containsKey(c1)) { res = map.get(c1); } System.out.println(res); } }

ps:

字符串的常用api 要熟悉,才能对字符串的题目有的放矢

加油:P

我的笔记:

一、int转String

String.valueOf(int)

二、char转String

String.valueOf(char)

三、String转int

Integer.parseInt(str)

四、String转换为char

1. String.charAt(i)(返回值为char)

2. String.toCharArray()

五、字符串的修改

使用 StringBuffer 和 StringBuilder 类。

StringBuilder sb = new StringBuilder(10); 这是设置容量10,可以自动扩容。

sb.method();

自带的反转字符串方法。 sb.reverse();

华为java题(华为机考练习题Java)(4)

Strings= sb.toString();

字符串大小写:

s.toLowerCase()

toLowerCase()方法将String转换为小写。如果字符串中没有应该被转换的字符,则将原字符串返回,否则返回一个新的字符串。

next() 方法遇见第一个有效字符(不是空格和换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,也就是说使用next()方法获得的是不含空格和换行符的单个字符串。

nextLine(),则可以扫描到一行内容并作为一个字符串

,