简单的算法问题2——奇怪的国家

简单的算法问题2——奇怪的国家

以下题目全是用C++写的…

以下算法题均来自计蒜客

题目

有一个奇怪的国家,里面的国民对于事情的态度永远只有两面。当两个人遇到一起讨论一个事情的时候——两个持赞同观点的人遇到一起后会对这个事情都继续赞同;一个持赞同观点的人遇到一个持不赞同观点的人的时候,两人都会不再继续赞同;两个持不赞同观点的人遇到一起讨论后反而会对这个事情开始赞同。

输入格式

输入包括两行,每行包括 N(1≤N≤50) 个数字,分别表示两个人对于 N 个事情对应的看法——0 表示不赞同、1表示赞同。

输出格式

输出包括一行,包括 N 个数字,表示两人相遇后,对于这 N 件事情的最终看法。

形如:

输入
11100101
00101011

输出
00110001

刨坑点

1.个人觉得这道题还是比较简单的。感觉像逻辑电路里面最基础的异或非。相同为1,不同为0。
2.值得注意的是就是在C++中<string>有一个string的方法为data()是字符数组,比较字符的时候你就可以用它来str1.data()[i]!=str2.data()[i] 或者 str1.data()[i]==str2.data()[i],前提是你要把你的两个字符串设置为 string str1,str2;。当然你可以不用这个你也可以用C中的<string.h> 比较时直接用(*str1++)!=(*str2++) 或者 (*str1++)==(*str2++) 前提是你要把你比较的两个字符串设置为char * str1 ,* str2;

代码

#include <iostream>
#include <string>
using namespace std;

string judge(string str1,string str2);

int main(){
    string str1;
    string str2;
    cin>>str1;
    cin>>str2;
    cout<<judge(str1,str2);

    return 0;
}
string judge(string str1,string str2){
    string str3;
    string s1(str1);
    string s2(str2);
    int i=0;
    if((str1.length()>0||str1.length()<51)&&(str2.length()>0||str2.length()<51)){
       while((s1.data()[i]=='0'||s1.data()[i]=='1')&&(s2.data()[i]=='0'||s2.data()[i]=='1')){
            if(s1.data()[i]==s2.data()[i]){
                str3.append("1");

            }
            else{
                str3.append("0");
            } 
            i++;
       }
       return str3;
    }

}

测试成功!~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值