gpt4 book ai didi

java - 如何检查字符串中的字符是否与前一个字符相同?

转载 作者:行者123 更新时间:2023-11-29 08:41:30 26 4
gpt4 key购买 nike

题目要求比较字符串是否有连续相同的字母,改写为字母加上字母的个数,例如5A中的AAAAA。但是当我使用 if 语句进行比较时,输出变成了一些非常长的数字而不是所需的结果。

这是问题的一部分:游程编码是一种简单的压缩方案,最适用于数据集主要由大量重复字符组成的长游程时。例如,AAAAAAAAAA 是连续 10 个 A。我们可以使用 *A10 之类的符号对此运行进行编码,其中 * 是表示运行的特殊标志字符,A 是运行中的符号,10 是运行的长度。

代码如下:

import java.util.Scanner;

public class RunLengthEncoding {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter input string: ");
String s = input.nextLine();
for (int a = 0; a < s.length(); a++) {
if ((s.charAt(a) < 'A' || s.charAt(a) > 'Z')) {
System.out.print("Bad input");
System.exit(0);
}
}
System.out.print("Enter flag character: ");
char flag = input.nextLine().charAt(0);
if (flag == '#' || flag == '$' || flag == '*' || flag == '&') {

int count = 0;
for (int i = 1; i < s.length(); i++) {
if(s.charAt(i)=s.charAt(i-1));
count++;

if (count == 1)
System.out.print(s.charAt(i));
if (count == 2)
System.out.print(s.charAt(i) + s.charAt(i));
if (count == 3)
System.out.print(s.charAt(i) + s.charAt(i) + s.charAt(i));
else
System.out.print(flag + s.charAt(i) + (count + 1));

}

} else
System.out.print("Bad input");
}
}

最佳答案

你的问题在这里:

if(s.charAt(i)=s.charAt(i-1));

首先,您必须使用== 而不是= 来比较char。其次,在 if 语句之后放置一个 ; 将导致它立即终止。换句话说,以下行不再是 if 语句的一部分。更改为:

if(s.charAt(i) == s.charAt(i-1))

编辑

关于您的评论,虽然我没有测试过,但这样的事情应该可行。只需将您当前的大型 if block 替换为以下内容:

if (flag == '#' || flag == '$' || flag == '*' || flag == '&') {
char last = ' ';
char curr = ' ';
int count = 1;
for (int i = 0; i < s.length(); i++) {
last = curr;
curr = s.charAt(i);
if (curr == last) {
count++;
} else if (last != ' ') {
System.out.print(("" + count) + last);
count = 1;
}
}
System.out.print(("" + count) + last);
}

关于java - 如何检查字符串中的字符是否与前一个字符相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com