题解 | #字符串字符匹配#

字符串字符匹配

https://www.nowcoder.com/practice/22fdeb9610ef426f9505e3ab60164c93

解题思路

我的解题方法是依次用短字符串中的字符,去和长字符中遍历一遍,如果有就计数变量加一,最后计数变量的大小和snum大小进行比较,如果相等就是全部出现过

本题主要是要注意以下几点

某个字符在长字符串中多次出现,需要避免重复计数

如:i 范围中的b 可能会在 j 范围内多次出现,因此需要一个标志位去判断是否是第一次出现。

下图展现了snum、lnum,i,j的取值范围,可以帮助理解代码

#include <stdio.h>

int main() {
    char Sarr[400]={'\0'},Larr[200]={'\0'};
    int snum=0,lnum=0;//snum是短字符串字符数,lnum是长字符串中字符数
    int i=0,j=0,num=0;//i和j控制循环,num是统计短字符中在长字符串中出现次数的
    int flag=0;//标志位,标志是否是第一次计数
    while(scanf("%c",&Sarr[i])!=EOF)
    {
        if(Sarr[i]=='\n'&&snum==0)
        {
            snum=i;
        }
        else if(Sarr[i]=='\n'&& snum!=0 && lnum==0)
        {
            lnum=i;
            break;
        }
        i++;
    }
    for(i=0;i<snum;i++)
    {
        for(j=snum+1;j<lnum;j++)
        {
            if((Sarr[i]==Sarr[j])&&(flag==0))//如果是第一次计数就进入,num++,标志位置1
            {
                num++;
                flag=1;
            }
        }
        flag=0;//遍历一遍长字符串后,标志位置0
    }
    if(num==snum)
    {
        printf("true");
    }
    else
    {
        printf("false");
    }

    
    return 0;
}

全部评论

相关推荐

02-28 13:25
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10656次浏览 93人参与
# 你的实习产出是真实的还是包装的? #
1901次浏览 42人参与
# 米连集团26产品管培生项目 #
5960次浏览 216人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7571次浏览 43人参与
# 简历第一个项目做什么 #
31669次浏览 336人参与
# 重来一次,我还会选择这个专业吗 #
433453次浏览 3926人参与
# 巨人网络春招 #
11336次浏览 223人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187114次浏览 1122人参与
# 牛客AI文生图 #
21423次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152357次浏览 888人参与
# 研究所笔面经互助 #
118900次浏览 577人参与
# 简历中的项目经历要怎么写? #
310233次浏览 4212人参与
# AI时代,哪些岗位最容易被淘汰 #
63650次浏览 823人参与
# 面试紧张时你会有什么表现? #
30506次浏览 188人参与
# 你今年的平均薪资是多少? #
213079次浏览 1039人参与
# 你怎么看待AI面试 #
180040次浏览 1255人参与
# 高学历就一定能找到好工作吗? #
64325次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76490次浏览 374人参与
# 我的求职精神状态 #
448050次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363390次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160641次浏览 1111人参与
# 校招笔试 #
470914次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务