Java 如何在一个字符串中找到四元组?
我有这个测试的挑战,但我绝对是初学者,所以我坚持它,任何适当的解决方案将非常感谢 我们可以说字符串中的“四倍”是一个连续出现四次的字符。打印给定字符串中的四位数。这四个部分可能重叠 提示:注意空格 输入格式 带字符串的单行 输出格式 一个数字 样本输入 abcxxxxabc 样本输出 二,Java 如何在一个字符串中找到四元组?,java,Java,我有这个测试的挑战,但我绝对是初学者,所以我坚持它,任何适当的解决方案将非常感谢 我们可以说字符串中的“四倍”是一个连续出现四次的字符。打印给定字符串中的四位数。这四个部分可能重叠 提示:注意空格 输入格式 带字符串的单行 输出格式 一个数字 样本输入 abcxxxxabc 样本输出 二, import java.util.*; 公务舱四座{ 公共静态void main(字符串[]args){ 扫描仪sc=新的扫描仪(System.in); 字符串s=sc.nextLine(); char[]c
import java.util.*;
公务舱四座{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串s=sc.nextLine();
char[]c=s.toCharArray();
int j=0;int k=1;int m=j+2;
对于(inti=0;i未测试,但我认为从现在起,您可以测试并更正它
public class CheckQuadruple {
private Boolean checkQuadrupleInString(String str, int i) {
if (i + 3 >= str.length())
return false;
if (str.charAt(i) != str.charAt(i + 1))
return false;
if (str.charAt(i + 1) != str.charAt(i + 2))
return false;
if (str.charAt(i + 2) != str.charAt(i + 3))
return false;
return true;
}
public int findQuadruple(String str) {
int sum = 0;
for (int i = 0; i < str.length(); i++) {
if (checkQuadrupleInString(str, i))
sum += 1;
}
return sum;
}
}
公共类检查四倍{
私有布尔校验字符串(字符串str,int i){
如果(i+3>=str.length())
返回false;
如果(str.charAt(i)!=str.charAt(i+1))
返回false;
如果(str.charAt(i+1)!=str.charAt(i+2))
返回false;
如果(str.charAt(i+2)!=str.charAt(i+3))
返回false;
返回true;
}
公共整数find4ple(字符串str){
整数和=0;
对于(int i=0;i
使用for循环的非常简单的暴力方法:
String input = "abcXXXXXabc";
// Counter to store the number of quadruples found
int quadrupleCounter = 0;
// Loop over each character in the input string (skip the last 3 to prevent going out of bounds)
for(int i = 0;i < input.length() - 3; i++) {
// Get the current char in the string + the next 3
char c1 = input.charAt(i);
char c2 = input.charAt(i + 1);
char c3 = input.charAt(i + 2);
char c4 = input.charAt(i + 3);
// Check if all 4 characters are equal
if(c1 == c2 && c2 == c3 && c3 == c4) {
quadrupleCounter++; // Increase the counter
}
}
System.out.println(quadrupleCounter);
String input=“abcxxabc”;
//计数器以存储找到的四倍数
int四重计数=0;
//循环输入字符串中的每个字符(跳过最后3个以防止越界)
对于(int i=0;i
或使用regexp(只是为了好玩):
如果我理解正确的话,“aaaabcccccc”意味着这个字符串中有4个四元组,比如你说的,它们可以重叠。这意味着aaaa是1,前四个ccc是2,然后从第二个c开始计数,还有一个是3,然后另一个是从第三个c开始计数,所以是4。
如果是这样,那么下面的代码应该可以
因此,我们通过将字符串拆分为字符来生成一个字符串“stringArray”。然后我们使用firs for循环(带i)来迭代所有字母,然后在该for循环中,我们生成另一个for循环来检查当前字母是否等于接下来的3个字母--->如果是真的,那么我们增加quadCount(我们找到了多少个四元组).然后,当forloop完成时,我们打印出quadCount
您可以看到,我们检查j=i+3是否小于字符串数组的长度(在第二个forloop中),因为如果在我们检查的字符数组之后,字母数组的末尾没有3个字符,那么肯定也不会有3个类似的字符
如果注意空格意味着“cccc”没有任何四元组,那么下面的代码是正确的。如果这意味着你不应该考虑空格,并且“cccc”有一个四倍,那么只需调用字符串上的.Trime.2方法。
类似于:String quad=“aaaabccc ccc”.trim();-->这将从字符串中删除(修剪)所有空格,代码就可以了
public static void main(String[] args) {
String quad= "aaaabcccccc";
int quadCount=0;
String[] stringArray= quad.split("");
for(int i=0; i<stringArray.length;i++){
String current= stringArray[i];
int j=i+3;
if(j<stringArray.length){
if(current.equals(stringArray[i+1]) && current.equals(stringArray[i+2]) && current.equals(stringArray[i+3]) ){
quadCount++;
}
}
}
System.out.println("Quadcounter final is: "+quadCount);
}
publicstaticvoidmain(字符串[]args){
字符串quad=“aaaabccccc”;
int quadCount=0;
String[]stringArray=quad.split(“”);
对于(int i=0;i您可以使用for循环和String substring()方法:
扫描仪输入=新扫描仪(System.in);
String str=input.nextLine();
整数计数=0;
对于(int i=0;i
嗨,阿提拉,欢迎来到SO。请查看下面的链接。到目前为止,您尝试了什么,您到底在哪一部分遇到了困难?您好,我可以提供一些我编写的代码,但这绝对是正确的“方法”为了解决这个问题。我一周前刚开始编写代码,我应该看到一个工作代码来理解逻辑。我试图做的是找到第一个重复的字符,然后比较这些字符是否重复了4次或更多次。对于一个有经验的人来说,这可能很容易,但我找不到解决方案。谢谢你的帮助我们的快速响应,我真的很感激。你能把它标记为解决方案吗?谢谢:)Boolean
可以是Boolean
我更改了代码,现在它在一个类中,你只需要实例化一个新对象,比如,checkfourple c=newcheckfourple();
然后调用方法c.findfourple(“TextToCheck”)再次感谢你,我要看一看。谢谢,这就是我需要的。这段代码比我预期的要简单得多。这对以后的参考很有用。再次感谢,我很感激。通过你的代码我可以完成我的一个,我意识到问题出在哪里,为什么我总是收到边界外的错误消息。再次谢谢。嘿,这是真的很酷,我真的很喜欢。我要研究这个方法,它看起来非常有用。Thx太多了。这是另一个很好的解决方案,Thx对于详细的解释,我也可以在其他任务中使用它。干得好,再次Thx。
Pattern pattern = Pattern.compile("(.)\\1{3}");
int quadrupleCounter = 0;
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
do {
quadrupleCounter++
} while (matcher.find(matcher.start()+1));
}
public static void main(String[] args) {
String quad= "aaaabcccccc";
int quadCount=0;
String[] stringArray= quad.split("");
for(int i=0; i<stringArray.length;i++){
String current= stringArray[i];
int j=i+3;
if(j<stringArray.length){
if(current.equals(stringArray[i+1]) && current.equals(stringArray[i+2]) && current.equals(stringArray[i+3]) ){
quadCount++;
}
}
}
System.out.println("Quadcounter final is: "+quadCount);
}
Scanner input = new Scanner(System.in);
String str = input.nextLine();
int count = 0;
for (int i = 0; i < str.length()-3; i++)
if (str.substring(i, i+2).equals(str.substring(i+2, i+4))) count++;
System.out.print(count);