标题:字符串转换 | 时间限制:1 秒 | 内存限制:262144K | 语言限制:不限
将一个只包含英文小写字母和大写字母和阿拉伯数字的字符串,按照如下规则转换,字符串 中连续出现的字符转化为字符加上字符连续出现的次数,同一个字母的大小写认为是相等 的,结果中输出小写。
输入描述:
第一行输入一个长度为 N 的字符串,只包含英文小写字母和阿拉伯数字;0。
输出描述:
每一行输入对应一行输出,输出转换后的字符串。
示例 1
输入 aa233aaaaaaaaaaaaaaaaaaa1
输出 a22132a1911
说明
字符串中,"aa"转换为"a2"; "2"转换为"21";"33"转换为"32";"aaaaaaaaaaaaaaaaaaa"转换为
"a19"; "1"转换为"11"。
示例 2
输入 Aa2sS11
输出 a221s212
说明 'A'和'a'都认为是'a',出现了 2 次,故"Aa"转换成"a2";"2"转换为"21";"sS"转换为"s2";"11"转换 为"12"; 拼接成"a221s212".
解题思路:先把字符串toLowerCase,然后用num来记录相同字符的个数,循环一遍字符串即可。注意最后一个字符的问题,最后要加上num。
public class Test5 {
public static void main(String[] args) {
String str = "aa233aaaaaaaaaaaaaaaaaaa1";
str = str.toLowerCase();
String s = String.valueOf(str.charAt(0));
int num = 1;
for (int i=1;i<str.length();i++){
String a = str.substring(i-1,i);
String b = str.substring(i,i+1);
if (a.equals(b)){
num++;
}else{
s = s+num+b;
num = 1;
}
}
System.out.println(s+num);
}
}