概述
题目描述:
输入一串字符,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。
例如:
aac 压缩为 1ac
xxxxyyyyyyzbbb 压缩为 3x5yz2b
输入描述:
任意长度字符串 如 xxxxyyyyyyzbbb
输出描述:
压缩后的字符串,即 3x5yz2b
分析思路:
运用 StringBuffer 的 append() 方法来实现字符串的增加。
(1) 若 count 不为 0 ,则先将 count 加入到 sb中,然后再讲字符加入 sb 中。
(2) 若 count 为 0 ,则将字符加入 sb 中。
注意点:
对于例子xxxyyyyyyzbbb中,最后一个b 与它的前一个b相等,没有执行 else 语句,也就没有执行append() 方法。
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
StringBuffer sb = new StringBuffer();
int count = 0;//统计相同字符的个数
for(int i=0; i< input.length() - 1; i++)
{
char c = input.charAt(i);
char nextC = input.charAt(i+1);
if(c == nextC)
count++;
else
{
if(count != 0)
{
sb.append(count);
count = 0;
}
sb.append(c);
}
}
if(count != 0)
sb.append(count);
sb.append(input.charAt(input.length()-1));
System.out.println(sb.toString());
}
}
方法二:字符串的直接相加,不适用StringBuffer.append() 方法。此方法对于字符串 "hello world"中的空格无效。。。
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();
int len = str.length();
char [] charArray = str.toCharArray();//定义一个数组,字符串转为数组
String newStr = "";//定义一个新的字符串
int count = 0;//统计重复数字的个数
for(int i=0; i<len-1; i++)
{
if(charArray[i]!=charArray[i+1])
{
if(count > 0)
{
newStr = newStr + count;//字符串连接
count = 0;
}
newStr = newStr + charArray[i];//字符串连接
}
else
{
count++;
}
}
if(count != 0)
newStr = newStr + count;
newStr = newStr + charArray[len-1];
System.out.println(newStr);
}
}
最后
以上就是无聊机器猫为你收集整理的将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串的全部内容,希望文章能够帮你解决将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复