题目描述 description
将输入的字符串压缩并统计,例如:"aaabbbbcdd",输出"a3b4c1d2";
输入 input
第一行输入一个整数n(0<n<100),表示接下来需要输入n行字符串;
输出 output
n行字符串转换后的字符串。
样例输入 sample input
1
aaabbbbccddd
样例输出 sample output
a3b4c2d3
代码实现:
import java.util.Scanner;
public class 字符串压缩 {
public static void zip(char a[ ]) //该函数实现对字符串具体压缩工作
{
char s=a[1];
int count=1;
for(int i=2;i<a.length;i++)
{
if(s==a[i]&&a[i]!=' ') //下一字符与起始字符相同且属于同行时,计数器+1
{
count++;
}
else { if(a[i]==' ') //遇到空格时,停止计数器+1操作,输出该字符与其重复次数
{
System.out.print(s+""+count);
System.out.println();
if(i<a.length-1){
s=a[i+1]; //将空格的下一字符赋值给s
count=0;} //计数器清零
}
else{ //无空格但该元素不等于新的起始字符
System.out.print(s+""+count); //输出字符
s=a[i];
count=1;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String c="";
int i=0;
while(i<=n) //实现将所输入的n行字符串整合于一个字符串中
{
c=c+""+sc.nextLine()+" "; //用空格将每行字符串相隔开
i++;
}
// System.out.println(c); //方便查看整合出的字符串
char chars[ ]=c.toCharArray(); //定义一个字符数组
zip(chars); //调用压缩函数来将该字符串进行压缩
}
}
本来一直停留在怎么用Scanner输入好几行字符串的问题上,感谢室友提的宝贵意见啦。这个题可能看着简单可实现过程和编写过程还是复杂。所以,还是实践重要,坚持写代码,坚持学习java.努力努力!!!