如何从字符串-java中移除字符串中出现的chrachter中的cod偶数对charachter。?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (62)

** Q01 [7 marks]编写一个以字符串作为输入的java程序,并使用EvenPairs(str)方法检查每个字符(即Alphabet)是否存在偶数对。样本测试案例

输入: “3gy41d21y363”

输出:

  • 3 - 错
  • g - 假
  • 而且 - 是的
  • 4 - 假
  • 1 - 是的
  • d - 假

正如你在输出中看到的那样,每个字符的出现只打印一次,即使它是重复的,我解决了问题,直到这一步我找不到解决方案只打印字符一次,如果它是真或假的结果

这是我的代码:

    package evenpairornot;

import java.util.Scanner;
public class EvenPairOrNot {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {

    System.out.print("Enter a string: ");
    String s1=input.nextLine();

    EvenPairs(s1);
}

public static void EvenPairs(String s){

    char [] chs=s.toCharArray();
    int count=0;

    for (int i = 0; i <chs.length; i++) {
        for (int j = 0; j <chs.length; j++) {
            if (chs[i]==chs[j]){
                count++; 
            }    
        } 

        if(count%2==0)
            System.out.println(s.charAt(i)+"- true");
            else
            System.out.println(s.charAt(i)+"- False");

        count=0; 
    }

}

}

这是输出:

输入字符串:3gy41d21y363 3-错 g-错 你真的 4-错 1-真的 d-错 2-错 1-真的 你真的 3-错 6-错 3-错

提问于
用户回答回答于

基本上所有人物都被计算在内。我向后看,确保在打印前没有重复。这里有很多优化空间,比如在计算之前进行检查,或者不计算所有字符,可以计算i之后的数字。

public static void EvenPairs(String s) {

    char[] chs = s.toCharArray();
    int count = 0;

    for (int i = 0; i < chs.length; i++) {
        for (int j = 0; j < chs.length; j++) {
            if (chs[i] == chs[j]) {
                count++;
            }
        }

        boolean shouldPrint = true;  
        for (int k = i - 1; k >= 0; k--) {  //loop though each character before the current one to check if it was already printed. 
            if (chs[k] == chs[i]) {         //if we it was already printed don't print.
                shouldPrint = false;
                break;
            }
        }

        if (shouldPrint) {
            if (count % 2 == 0)
                System.out.println(s.charAt(i) + "- true");
            else
                System.out.println(s.charAt(i) + "- False");
        }

        count = 0;
    }

}

扫码关注云+社区

领取腾讯云代金券