Java实现字符串倒序输出以及判断一个字符串中某个字符的出现次数
程序员文章站
2024-03-15 16:11:17
...
忽然想到笔试时经常出现的两个问题,碰到了只能写个大概的思路代码出来,自己都不能确定是不是可以运行,不是很复杂的内容,就随便写写了。
判断一个字符串中某个字符的出现次数
听到这个大家第一反应该是先把字符串转换为字符数组,然后使用foreach循环,在循环体内进行字符比对,代码如下:
public static void main(String[] args) {
String str = "ABCDEFJ ABPA B";
char searchChar = 'B';
int count = 0;
char[] charArray = str.toCharArray();
for (char item : charArray) {
if (item == searchChar) {
count++;
}
}
System.out.println("字符" + searchChar + "出现的次数为:" + count);
}
但这个只能对比单个字符,如果是个多个字符组合的就没办法了,所以就需要用下面的方法:
public static void main(String[] args) {
String str = "ABCDEFJ ABPA B";
String searchChar = "AB";
//方法A
String newStr = str.replaceAll(searchChar, "");
int count1 = (str.length() - newStr.length()) / searchChar.length();
System.out.println("[方法A]字符" + searchChar + "出现的次数为:" + count1);
//方法B
int count2 = 0;
while (str.contains(searchChar)){
str = str.substring(str.indexOf(searchChar) + searchChar.length());
count2 ++;
}
System.out.println("[方法B]字符" + searchChar + "出现的次数为:" + count2);
}
方法A是最简洁的,计算长度差就ok了(面试官也应该喜欢这个答案吧)
字符串倒序输出
方法一:StringBuilder 和 StringBuffer里有一个自带reverse()方法,让字符序列被序列的相反部分替换,简单来说就是反序输出。
方法二:利用String类的toCharArray(),再通过foreach倒序拼接。
public static void main(String[] args) {
String str = "123456789";
System.out.println("反转前:" + str);
//方法一
String reverseStr = new StringBuilder(str).reverse().toString();
System.out.println("【方法一】反转后" + reverseStr);
//方法二
char[] chars = str.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
for (int i = chars.length - 1; i >= 0 ; i--) {
stringBuilder.append(chars[i]);
}
System.out.println("【方法二】反转后:" + stringBuilder.toString());
}
最终输出结果
上一篇: 科大讯飞-19届笔试
推荐阅读