华为机试在线训练_字符串匹配(字符串)

字符串匹配

http://www.nowcoder.com/questionTerminal/22fdeb9610ef426f9505e3ab60164c93

/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华 2002-03-23 字符串匹配 */ #include <iostream> using namespace std; //字符串匹配的函数接口 //判断短字符串中的所有字符是否在长字符串中全部出现,区别于短字符串是否为长字符串的子字符串。 int String_Matching(string str1, string str2) {     int short_str[128] = {0}; //记录短字符串中各种字符的出现情况     int long_str[128] = {0}; //记录短字符串中各种字符的出现情况     int count = 0; //短字符串和长字符串具有相同字符的个数     int sum = 0; //短字符串具有不同字符的总数     //字符记录:若某字符出现在(短、长)字符串中,则置该字符的 ASCII 码作为下标对应的数组元素为 1     for (int i = 0; i < str1.size(); i++)     {         short_str[str1[i]] = 1;     }     for (int i = 0; i < str2.size(); i++)     {         long_str[str2[i]] = 1;     }     //计数:第一个 if 语句:得到短字符串和长字符串具有相同字符的个数,第二个 if 语句:得到短字符串具有不同字符的总数     for (int i = 0; i < 128; i++)     {         if ((short_str[i] == 1) && (long_str[i] == 1))         {             count++;         }         sum += short_str[i];     }     //若短字符串和长字符串具有相同字符的个数 和 短字符串具有不同字符的总数 相等,则满足要求     if (count == sum)     {         cout << "true" << endl;     }     else if (count != sum)     {         cout << "false" << endl;     }     return 0; } //主函数 int main() {     string ShortString, LongString;     while (cin >> ShortString >> LongString)     {         String_Matching(ShortString, LongString);     }     return 0; }

大厂面试 文章被收录于专栏

分享有用的面试经历,倾吐有心的面试感悟,讲述有趣的面试故事,以飨读者。 常用语言是C++,编程力求规范整洁,题解清晰完整,像写诗一样去写代码。 本专栏文章系「人工智能安全」(微信公众号)原创,转载请联系本文作者。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师,期待与你的思想交流碰撞出智慧的花火。

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务