题解 | #牛群智能指导系统#
牛群智能指导系统
https://www.nowcoder.com/practice/94e01098fe8f4941ba90fb64ab2d7025
考察知识点:数组,遍历
解题分析: 这道题首先可以将单词都拆分出来,之后按照顺序匹配pattern的每个字符,对应到plan的的单词是否有相同的字符出现,如果都能找到对应的字符,就可以返回true,如果其中某个字符在对应的单词上找不到相同的字符,可以直接返回false
编程语言:C
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pattern string字符串 * @param plan string字符串 * @return bool布尔型 */ #include <string.h> bool isValidPattern(char* pattern, char* plan ) { char word[100][100] = {0}; int count1 = 0, count2 = 0; int len1 = strlen(pattern), len2 = strlen(plan); bool flag = 0; for (int i = 0; i < len2; i++) { // 将plan字符串拆分成不同的单词,并保存到word中 if (plan[i] != ' ') { word[count1][count2++] = plan[i]; } else { // 如果遇到空格,就更新word指向下一个单词保存 word[count1][count2++] = '\0'; count1++; count2 = 0; } } for (int i = 0; i <= count1; i++) { flag = 0; for (int j = 0; j < strlen(word[i]); j++) { 用pattern的第i个字符和第i个单词的每个字符做比较,如果找到有相同的字符出现,就退出当前的循环,继续匹配下一个字符 if (word[i][j] == pattern[i]) { flag = 1; // flag置1表明找到了相同的字符 break; } } if (flag == 0) // flag为0表示遍历完了word的所有字符都没有找到相同的字符,所有可以直接返回false return false; } return true; }
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,