首页 > 试题广场 >

奇偶校验

[编程题]奇偶校验
  • 热度指数:10123 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3’,输出:10110011)。

输入描述:
输入包括一个字符串,字符串长度不超过100。


输出描述:
可能有多组测试数据,对于每组数据,
对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
示例1

输入

3
3a

输出

10110011
10110011
01100001
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null) {
            char[] chars = s.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                int ten = (int) chars[i];
                String two = Integer.toBinaryString(ten);
                StringBuilder two1 = new StringBuilder(two);
                two1.reverse();
                for (int j = two1.length(); j < 7; j++) {
                    two1.append('0');
                }
                int count = getnum1(two);
                if (count % 2 == 0) two1.append('1');
                else two1.append('0');
                System.out.println(two1.reverse());
            }
        }
    }

    private static int getnum1(String two) {
        int count = 0;
        for (int i = 0; i < two.length(); i++) {
            if (two.charAt(i) == '1') {
                count++;
            }
        }
        return count;
    }
}


发表于 2021-02-24 11:06:22 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){
            String s1 = in.nextLine();
            for (int i = 0; i < s1.length() ; i++) {
                ODD((s1.charAt(i)));
            }
        }
    }

    private static void ODD(char s) {
        String m = Integer.toBinaryString((int) s) ;
        while(m.length()<7){
            m = "0" + m;
        }
        int count = 0;
        for (int j = 0; j < m.length() ; j++) {
            if(m.charAt(j)=='1'){
                count++;
            }
        }
        if(count % 2 ==0){
            m = "1"+m;
        }else {
            m = "0"+m;
        }
        System.out.println(m);
    }
}

发表于 2020-07-03 21:19:57 回复(0)
Java 解法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String s = scanner.next();
            char[] array = s.toCharArray();
            for (char c : array) {
                String s1 = Integer.toBinaryString(c);
                String s2 = String.format("%07d", Integer.parseInt(s1));
                int count = 0;
                for (int j = 0; j < 7; j++) {
                    if (s2.charAt(j) == '1') count++;
                }
                System.out.println(count % 2 == 0 ? "1" + s2 : "0" + s2);
            }
        }
    }
}


发表于 2020-03-14 19:19:53 回复(0)