精华内容
下载资源
问答
  • C语言查找字符串

    千次阅读 2017-09-21 00:17:55
    简述使用c语言实现字符串查找子串,返回第一个子串出现的位置。环境 ubuntu16.04 LTS GCC编译器 代码 #include #define N 100 int find_str(char* str1,char* str2) { int i,j,flag=-1; for(i=0,j=0;str1[i]!=...

    简述

    使用c语言实现字符串查找子串,返回第一个子串出现的位置。

    环境

    ubuntu16.04 LTS
    GCC编译器

    代码

    
    #include<stdio.h>
    #define N 100
    int find_str(char* str1,char* str2)
    {
        int i,j,flag=-1;
        for(i=0,j=0;str1[i]!=NULL;i++)
        {
            while(str1[i]==str2[j]&&str1[i]&&str2[j])
            {
                i++;
                j++;
                if(str2[j]==NULL)
                {
                    flag=i-j;
                    return flag;
                }
            }
            j=0;
        }
        return flag;
    }
    int main()
    {
        int flag;
        char str1[N],str2[N];
        printf("请输入源字符串:\n");
        scanf("%s",str1);
        printf("请输入查找字符串:\n");
        scanf("%s",str2);
        flag=find_str(str1,str2);
        if(flag!=-1)
        {
            printf("已找到!位置:%d\n",flag);
        }
        else
        {
            printf("未找到!\n");
        }
        return 0;
    }

    解析

    函数原型

    int find_str(char* str1,char* str2);

    • str1为char类型的指针,是被查找的字符串。
    • str2为char类型的指针,是需要查找的字符串。
    • 返回值int类型。

    首先判断str1的第一个元素是否与str2的第一个元素相同?

    如果相同,则str1与str2的下标同时增加,指向下一个元素,继续判断下一个元素是否相同,如果不同则跳出并且j恢复初值0,如若相同,继续下一个,直到某一个元素为空不存在,str1[i]先为空,说明已经查询到文件尾,但是未找到!如果str2[j]先为空,则说明已经完全匹配,j为str2长度,i为str1的查找子串尾下标,所以i-j的值为str1中子串首次出现的首位置。

    如果第一个元素不相同,则i++,str1的下一个元素与str2的首元素相比,以此类推。

    注意flag初值-1,表示未找到返回-1(若找到,下标从0开始)

    运行截图

    代码截图
    这里写图片描述

    运行截图
    这里写图片描述

    展开全文
  • C语言 查找字符串

    2018-12-20 23:14:58
    输入一个字符串,并查找字符串. #include &lt;stdio.h&gt; #include &lt;string.h&gt; int search(char str[],char word[]) { int length = strlen(word); int i = 0, j = 0, num = 0; while...

    输入一个字符串,并查找子字符串.

    #include <stdio.h>
    #include <string.h>
    int search(char str[],char  word[])
    {
     int length = strlen(word);
     int i = 0, j = 0, num = 0;
     while(str[i + length-1] != '\0') {
      for (j = 0; j < length; j++) {
       if (str[i + j] != word[j])
        break;
      }
      if (j == length) {
       num++;
       i += length;
      }
      else
       i++;
     }
     return num;
    }
    int main()
    {
     char str[100] = { '\0' };
     char word[10] = { '\0' };
     int num = 0;
     gets(str);
     gets(word);
     num = search(str, word);
     printf("%d", num);
     return 0;
    }
    展开全文
  • c语言查找字符串中单词While studying for interviews, I’ve been practicing my algorithm skills on LeetCode and other sites quite a bit. Read on for a walkthrough of my JavaScript solution to the Find ...

    c语言查找字符串中单词

    While studying for interviews, I’ve been practicing my algorithm skills on LeetCode and other sites quite a bit. Read on for a walkthrough of my JavaScript solution to the Find Words That Can Be Formed by Characters problem on LeetCode (instructions from LeetCode are below).

    在学习面试时,我已经在LeetCode和其他站点上练习了很多算法技巧。 阅读我JavaScript解决方案的演练,以解决LeetCode上的“可以由字符形成的单词”问题(来自LeetCode的说明如下)。

    问题 (The Problem)

    You are given an array of strings words and a string chars. A string is good if it can be formed by characters from chars (each character can only be used once). Return the sum of lengths of all good strings in words.

    给您一个字符串words数组和一个字符串chars 。 如果字符串可以由字符中的chars (每个字符只能使用一次),则该字符串是好的 。 返回在所有好的字符串长度的总和words

    Note:

    注意:

    1. 1 <= words.length <= 1000

      1 <= words.length <= 1000

    2. 1 <= words[i].length, chars.length <= 100

      1 <= words[i].length, chars.length <= 100

    3. All strings contain lowercase English letters only.

      所有字符串仅包含小写英文字母。

    Example 1:

    范例1:

    Input: words = ["cat","bt","hat","tree"], chars = "atach"Output: 6Explanation: 
    The strings that can be formed are "cat" and "hat" so the answer is 3 + 3 = 6.

    Example 2:

    范例2:

    Input: words = ["hello","world","leetcode"], chars = "welldonehoneyr"Output: 10Explanation: 
    The strings that can be formed are "hello" and "world" so the answer is 5 + 5 = 10.

    The Solution

    解决方案

    Put simply, we’re going to create a counter variable, build a loop through the words array that creates objects from chars, then loop through each word in words to determine whether it is good or not. If it is good, we’ll add its length to our counter, and return the final count at the end. Let’s break this down!

    简而言之,我们将创建一个计数器变量,通过word数组构建一个循环,该循环从chars创建对象,然后循环遍历word中的每个单词以确定它是否好。 如果好,我们将其长度添加到计数器中,并在最后返回最终计数。 让我们分解一下!

    First, let’s create our counter variable — we’ll call this finalCount since we’re returning it at the end as a final count. Let’s also make a variable called charObj which will eventually hold a character object, but will not have a value for now.

    首先,让我们创建计数器变量-我们将其称为finalCount,因为我们在最后将其作为最终计数返回。 我们还创建一个名为charObj的变量,该变量最终将保存一个字符对象,但暂时没有值。

    Let’s move on to our outer for loop. Starting at index 0, we will loop over each word in the words array. Because each character in char can only used once when forming a good word, we know that any word that has a greater length than the length of char cannot possibly be good. We’ll save some time on those words and keep moving through the outer loop to the next word instead of spending time on our (yet to be created) inner loop when that happens.

    让我们继续我们的外部for循环。 从索引0开始,我们将遍历words数组中的每个单词。 由于char中的每个字符在构成一个好的单词时只能使用一次,因此我们知道,长度大于char长度的任何单词都不可能是好的。 我们将在这些单词上节省一些时间,并继续在外循环中移动到下一个单词,而不是在发生这种情况时花时间在我们(尚未创建)的内循环上。

    We’re going to want to keep track of what characters from char we’ve already compared, so we will create a new character object in the outer loop whenever we start going through a new word to ensure the count of each character in char is reset to its original state. We’ll have a separate helper function (included in our final solution) called makeCharObj which will create the character object, and assign the value to our already created charObj variable.

    我们将要跟踪已经比较过的char中的哪些字符,因此,每当我们开始使用新单词以确保char中每个字符的计数为重置为其原始状态。 我们将有一个名为makeCharObj的单独的辅助函数(包含在最终解决方案中),该函数将创建字符对象,并将该值分配给我们已经创建的charObj变量。

    var countCharacters = function(words, chars) {
    let finalCount = 0;
    let charObj;
    for (let i = 0; i < words.length; i++) {
    if (words[i].length > chars.length) continue;
    charObj = makeCharObj(chars);
    }
    }

    Let’s move onto our inner for loop! We’ll be iterating through each word of words, with our incrementing variable j starting at index 0. To make our code a little cleaner, we can create a variable called char, equal to words[i][j], or each character in each string in the array.

    让我们进入内部for循环! 我们将遍历单词中的每个单词,并使用从索引0开始的递增变量j。为使我们的代码更加简洁,我们可以创建一个称为char的变量,它等于单词[i] [j]或每个字符在数组中的每个字符串中。

    Now we just need a conditional statement to determine if the word is good and add it to our final count if so. If we’ve reached the end of our word and the character object has a value at the key of the current character, we can add the length of the current word to our final count, since the word has been validated as good. Otherwise, if the character object has a value at the key of the current character but we’re not at the end of the current word, we will keep going through the loop to the next letter of the word, and also decrement the count of the value of the character object’s key, since we need to track how many times each character in char is used in the word. If neither of these conditions are met, we will break out of the inner loop and move on to the next word, because it means that the character object does not have a value at the key of the current character, so it is not solely made up of characters in char, and is therefore not a good string.

    现在,我们只需要一个条件语句来确定单词是否良好,如果可以,将其添加到最终计数中。 如果我们到达了单词的末尾,并且字符对象在当前字符的键处具有值,则可以将当前单词的长度添加到最终计数中,因为该单词已经过验证。 否则,如果字符对象在当前字符的键处有一个值,但我们不在当前单词的末尾,则我们将继续遍历循环到单词的下一个字母,并减少字符对象的键的值,因为我们需要跟踪char中每个字符在单词中的使用次数。 如果这两个条件均不满足,我们将跳出内循环并转到下一个单词,因为这意味着字符对象在当前字符的键处没有值,因此不是唯一的字符中的字符,因此不是一个好的字符串。

    for (let j = 0; j < words[i].length; j++) {
    let char = words[i][j];
    if (j == words[i].length - 1 && charObj[char]) {
    finalCount += words[i].length;
    } else if (charObj[char]) {
    charObj[char]--;
    } else {
    break;
    }
    }

    The only thing left to do after running through both loops is to return our final count! Let’s take a look at our full solution, including our helper function, with a runtime of O(n²).

    经过两个循环后,剩下要做的唯一一件事就是返回我们的最终计数! 让我们看一下完整的解决方案,包括我们的帮助函数,其运行时为O(n²)。

    Problem solved!
    问题解决了!

    You can find the problem on LeetCode here!

    你可以找到关于本文给出了这个问题在这里

    Thanks for reading!

    谢谢阅读!

    翻译自: https://medium.com/@jenlindner22/find-words-that-can-be-formed-by-characters-6b4053e62e

    c语言查找字符串中单词

    展开全文
  • C语言查找字符串并返回索引

    千次阅读 2018-05-23 00:57:00
    C语言本身没有查找字符串并返回索引的函数,虽然说自己写一个查找函数也能获取索引,但是下面的方法更简便 C语言有一个strchr函数用于查找字符出现的第一个位置,关键就是这个函数,如果巧用,也可以获得找到的字符串的...

    C语言本身没有查找字符串并返回索引的函数,虽然说自己写一个查找函数也能获取索引,但是下面的方法更简便

    C语言有一个strchr函数用于查找字符出现的第一个位置,关键就是这个函数,如果巧用,也可以获得找到的字符串的索引

    1     char *str_1 = "wtwq211";
    2     char *str_2 = strchr(str_1, 'q');
    3     printf("%s\n", str_2);
    4 
    5     int index=str_2 - str_1;
    6     printf("%c\n", str_1[index]);        

     

    展开全文
  • //从test.txt中查找 FILE *fp = fopen( "./test.txt" , "r+" ); if (NULL == fp){ printf ( "Error open file\n" ); exit ( 0 ); } get = search_str( "hello" ,&row,&col,fp); if (get){ printf ...
  • C语言在字符串中查找字符串

    千次阅读 2019-10-28 20:55:36
    输入和输出 输入:一段话,一个单词 输出:该单词是否出现在这段话中 代码 #include <stdio.h> #include <string.h> #define N 100 ...int isPresent(char *line, char *word);... char line[N], wor...
  • C语言 查找一个字符串中出现最的重复字符串算法思想:因为是出现的重复最多的字符串,有可能是一个字符重复最多,因此先在这个字符串查找出现最多的字符,之后在以这个字符为标记点,开始查找最长的。#include#...
  • C语言实现字符串中查找字符串

    万次阅读 2013-01-15 16:14:24
    查找字符串函数实现://find string in string, return the first start location or -1 if can not find int StringFind(const char *pSrc, const char *pDst) { int i, j; for (i=0; pSrc[i]!='\0'; i++) { ...
  • void str_str_replace(char s1[],char a[],char b[]) //字符串s1中的a 替换成b { int s1_len=strlen(s1); //计算三者长度 int a_len=strlen(a); int b_len=strlen(b); //找出a[] int i=0; //i用来指定s1下标 ...
  • C语言字符串查找函数,字符串查找子串
  • C语言strchr()函数:查找某字符在字符串中首次出现的位置头文件:#include strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:char * strchr (const char *str, int c);【参数】str 为要查找字符串,c ...
  • C语言查找字符

    2017-04-29 22:58:32
    char * strchr(const char *str,int character)查找character在str中第一次出现的位置的地址 char * strrchr(const char *str,int character)查找character.../*C语言查找字符串*/ /* char * strchr(const char *str,i
  • C语言实现字符串查找和替换

    万次阅读 多人点赞 2016-06-02 15:19:42
    常用字处理软件或者编辑器都提供字符串查找和替换功能,本文描述如何借助C语言字符串处理函数来实现字符串查找和替换功能。  先说查找字符串查找主要使用strstr函数,其原型为:char * strstr(char * str...
  • C语言不像其他编程语言有专门的字符串类型,C语言字符串一般是存于字符数组或由字符指针表示,字符串是指一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾,因为NUL为非打印字符,所以选它为终止符,字符...
  • c语言字符串中查找字符串 Till now I told you about the arrays in C language. I have also explained the close relation between arrays and pointers. Now lets move this journey to one step forward. Today ...
  • c语言库函数 字符串 标准库字符串函数 (Standard Library String functions) Mostly, every C compiler provides a set of useful library functions for handling strings. Here is a list of more commonly used ...
  • C语言字符串查找

    2014-04-27 16:40:53
    C语言实现字符串查找,完整代码,直接使用
  • 处理字符串常用string.h里面的字符串函数 … 字符指针数组查找字符串: 1.遍历数组,比较字符串大小判断是否相等 int str_search1(const char*dststr, const char**srcstr, int num) //适用于全部字符串(字符数组和...
  • c语言判断字符串中是否包含某个字符 源码点击这里
  • C语言实现查找字符串

    2020-08-03 14:30:57
    代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> char* one(char* a, char*b) { //printf("%c\n", *(a+16)); char* a1 = a; char* b1 = b; int coun = 0; int i = 0;... if (*(a1
  • C语言 查找字符串子 返回位置

    万次阅读 2017-04-12 19:12:43
    主要的思路就是,不断的从母 str1 中取出和子串长度相等的临时子串 temp_str,与子串 str2 进行比较。没有找到子串,返回 -1;成功找到子串,返回子串首字母在母中的位置,该位置从 0 开始。#include #include ...
  • C语言字符串比较

    千次阅读 多人点赞 2020-11-02 13:18:19
    在单片机串口实现字符串命令解析这篇文章中分析了在串口通信中如何去解析字符串命令,这篇文章就来讨论下字符串比较的方法都有哪些? 说起比较运算,肯定第一时间想到了C语言中关于比较的相关运算符 “>、<...
  • C语言实现字符串常用函数 Strlen求字符串长度 Strcpy字符串复制 Strcat字符串粘贴 strchr字符串查找 strcmp字符串是否相等 6. strstr字符串检索
  • C语言字符串查找函数

    千次阅读 2018-02-20 16:28:09
    C/C++ string库(string.h)提供了几个字符串查找函数,如下:memchr在指定内存里定位给定字符strchr在指定字符串里定位给定字符strcspn返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的字符数量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,963
精华内容 34,385
关键字:

c语言查找字符串

c语言 订阅