题解 | #牛群智能指导系统#

牛群智能指导系统

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题目,

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务