记录一下今年的首次刷算法题,同时也是自己想出来的算法,题目如下:
键盘输入一个字符串,统计字符串中连续字符个数,并返回子串,连续字符个数写在字符前,如
输入:ababaaabbb
输出:1a1b1a1b3a3b
网上的方法都比较复杂,这里我提供一个双指针的思路:定义int i,j ,用i确定字符,用j来确定字符的个数
import java.util.Scanner;
public class MyString {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一行字符串:");
String str = sc.nextLine();
System.out.println(Sort_String(str));
}
public static String Sort_String(String str){
if(null == str) return "";
String res = "";
int len = str.length();
for (int i = 0; i < len; i++) {
int j = i;
while(j < len-1 && str.charAt(i) == str.charAt(j+1)){
j++;
}
res += String.valueOf(j-i+1)+str.charAt(i) ;
i = j;
}
return res;
}
}
运行结果: