不知道这个方法常不常见,个人觉得还挺好的,大概思路是将待被比较的字符串统一转成大写后,转换成数组,利用Arrays的静态sort方法给字符串数组排序(排序的目的是可以避免遍历从而提高查找效率)。再将排好序的数组存入字符缓冲区。从待比较的字符在缓冲区里首次出现的位置开始计算以后还有几根跟他一样的,这样就不用遍历了。
import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { //接收带查找字符串,并统一转换成大写,排序后存入字符串缓冲区 String s=sc.next(); String sUp=s.toUpperCase(); char[] charArray=sUp.toCharArray(); Arrays.sort(charArray);//排序 StringBuffer charArrayBuffer=new StringBuffer();//构建字符串缓冲区 charArrayBuffer.append(charArray); //接受要比较的字符 String sValue=sc.next(); String sValueUp=sValue.toUpperCase(); char value=sValueUp.charAt(0); String startValue=""; startValue+=value; //判断查找 int count=0; int flag=charArrayBuffer.indexOf(startValue); if(flag==-1) System.out.println(0); else { for(int start=charArrayBuffer.indexOf(startValue);start<charArrayBuffer.length();start++) { if(charArrayBuffer.charAt(start)==value) count++; else break; } System.out.println(count); } } sc.close(); } }