2025年字符串的奇偶性

字符串的奇偶性题目描述 我们把只有 0 和 1 组成的字符串叫做比特字符串 如果比特字符串中 1 的个数为奇数 则称这个比特字符串是奇性的 如果比特字符串中 1 的个数为偶数 则称这个比特字符串是偶性的 注意 1 0 是偶数 所以不包含 1 的比特字符串是偶性的 2 0 的个数不影响比特字符串的奇偶性 输入

大家好,我是讯享网,很高兴认识大家。

题目描述
我们把只有0和1组成的字符串叫做比特字符串。如果比特字符串中1的个数为奇数,则称这个比特字符串是奇性的。如果比特字符串中1的个数为偶数,则称这个比特字符串是偶性的。
注意:
(1)0是偶数,所以不包含1的比特字符串是偶性的。
(2)0的个数不影响比特字符串的奇偶性。
输入

输出

每组输入对应一个输出,你应该将最后的字母替换成0或1,使得此比特字符串符合输入时确定的奇偶性。

样例输入

101e
010010o
1e
000e
o


讯享网

样例输出

1010
0
11
0000

思路:
计算出字符串中0和1的个数,然后按照样例写代码即可

注意:

  • 输入的字符串最后一位是e/o,故字符串中字符0/1的个数最多为s.size() - 1
  • 注意强制类型转换(int)s.size()
  • 如果原字符串是偶性的且字符1的个数也为偶数,那么只能将末尾字符变为0(变为1会将1的个数由偶数变为奇数从而改变了奇偶) 101e -> 1010
  • 1的个数为奇数但字符串为偶性,则只能将最后一位字符变为’1’ 1e -> 11
  • 若字符串中1的个数为偶数但字符串为奇性,则只能将最后一位字符变为’1’ 010010o -> 0
  • 若字符串中1的个数为奇数且字符串为奇性,则只能将最后一位字符变为’0’ o ->
  • 不包含1的字符串(字符串全为0)是偶性的,此时只能将字符串最后一位变为’0’才不会改变奇偶性 000e -> 0000
  • 还要注意一种情况:0000o -> 00001

AC代码:

#include <cstdio> #include <string> #include <cstring> #include <iostream> using namespace std; int main() { 
    string s; while (cin >> s && s != "#") { 
    int len = (int)s.size(); //计算字符串中0/1的个数 int cnt_1 = 0,cnt_0 = 0; for (int i = 0;i < len - 1;i++) { 
    if (s[i] == '1') cnt_1 += 1; else if (s[i] == '0') cnt_0 += 1; } //000e -> 0000 if (cnt_0 == len - 1 && (char)s[len - 1] == 'e') s[len - 1] = '0'; //0000o -> 00001 else if (cnt_1 == 0 && (char)s[len - 1] == 'o') s[len - 1] = '1'; //1e -> 11 else if (cnt_1 % 2 != 0 && (char)s[len - 1] == 'e') s[len - 1] = '1'; //101e -> 1010 else if (cnt_1 % 2 == 0 && (char)s[len - 1] == 'e') s[len - 1] = '0'; //010010o -> 0 else if (cnt_1 % 2 == 0 && (char)s[len - 1] == 'o') s[len - 1] = '1'; //o ->  else if (cnt_1 % 2 != 0 && (char)s[len - 1] == 'o') s[len - 1] = '0'; cout << s << endl; } return 0; } 

讯享网
小讯
上一篇 2025-03-07 15:22
下一篇 2025-03-15 21:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/57641.html