精华内容
下载资源
问答
  • 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
    char * strchr(const char *str,int character)查找character在str中第一次出现的位置的地址

    char * strrchr(const char *str,int character)查找character在str中最后一次出现的位置的地址

    例子:

    /*C语言查找字符串*/
    /*
    char * strchr(const char *str,int character)查找character在str中第一次出现的位置的地址
    char * strrchr(const char *str,int character)查找character在str中最后一次出现的位置的地址
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main()
    {
    	char *s="abcdefkghijklmnzkc";
    	char *p1,*p2;
    	p1=strchr(s,'k');
    	printf("s的起始地址:%ld\n",s);
    	printf("'k'第一次在s中出现的地址:%ld\n",p1);
    	printf("'k'第一次在s中出现的位置:%ld\n",(p1-s+1));
    	p2=strrchr(s,'k');
    	printf("'k'最后一次在s中出现的地址:%ld\n",p2);
    	printf("'k'最后一次在s中出现的位置:%ld\n",(p2-s+1));
    	//system("pause");
    	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语言查找字符

    千次阅读 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语言查找字符串并返回索引

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

    万次阅读 2017-04-12 19:12:43
    // 返回子串第一个字符在母串中的位置 } int main() { char *str1 = "abcdefghijk" ; char *str2 = "def" ; int i = 0 ; i = GetSubStrPos(str1,str2); if ( i< 0 ) { printf( "not found\n" ...
  • //从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语言 查找指定字符

    千次阅读 2020-03-25 20:29:38
    本题要求编写程序,从给定字符串中查找某指定的字符。 输入格式: 输入的第一行是一个待查找字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。 输出格式: 如果找到,在一行内按照格式“index = 下标...
  • 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语言字符查找函数,字符串中查找子串
  • 主要介绍了C语言查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下
  • 处理字符串常用string.h里面的字符串函数 … 字符指针数组查找字符串: 1.遍历数组,比较字符串大小判断是否相等 int str_search1(const char*dststr, const char**srcstr, int num) //适用于全部字符串(字符数组和...
  • my_strchr()函数的功能是:在字符串str中查找字符ch第一次出现的位置,找到后函数返回指向该位置的指针。如果该字符不存在在字符串中,则返回NULL。 my_strrchr()函数的功能是:在字符串str中查找字符ch最后一...
  • 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++) { ...
  • C语言字符查找

    2014-04-27 16:40:53
    C语言实现字符串的查找,完整代码,直接使用
  • 本题要求编写程序,从给定字符串中查找某指定的字符。 输入格式: 输入的第一行是一个待查找字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。 输出格式: 如果找到,在一行内按照格式“index = 下标...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,796
精华内容 718
关键字:

c语言查找字符

c语言 订阅