与字符串有关的题目

1、统计某种字符串中某个字符或某个字符串出现的次数,以及每次出现的索引位置

有如下字符串:【"患者:“大夫,我咳嗽得很重。”
* 大夫:“你多大年记?” 患者:“七十五岁。”
* 大夫:“二十岁咳嗽吗”患者:“不咳嗽。”
* 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。”
* 大夫:“那现在不咳嗽,还要等到什么时咳嗽?”"】。
* 需求:请统计出该字符中“咳嗽”二字的出现次数,
* 以及每次“咳嗽”出现的索引位置。*/

        static void GetCough(string str)
        {
            int n = 0;
            int nStartIndex = 0;
            while (true)
            {
                int index = str.IndexOf("咳嗽", nStartIndex);
                if (-1 == index)
                {
                    break;
                }
                else
                {
                    n++;
                    nStartIndex = index + 2;
                    Console.WriteLine("第{0}次咳嗽出现的位置是{1}",n,index);
                }
            }
        }

2、去掉空格,替换空格类型

  一般调用string的Trim方法去掉字符串前面和后面两边的空格,去掉前面的空格用TrimStart,去掉后面的空格用TrimEnd。

  将字符串中间的空格去掉可以先用Split将字符串分割成若干个子串,再用Join将这些子串连接成一个字符串。

       /*20.    将字符串"  hello      world,你  好 世界   !    "两端空格去掉,
         * 并且将其中的所有其他空格都替换成一个空格,
         * 输出结果为:"hello world,你 好 世界 !"。   */
        static void Main(string[] args)
        {
            string str = "  hello      world,你  好 世界   !    ";
            Console.WriteLine("输出结果: {0}", DealString(str));
            Console.ReadKey();
        }

        static string DealString(string strSrc)
        {
            string strDesc = strSrc.Trim();
            string[] strs = strDesc.Split(new char[] {‘ ‘},StringSplitOptions.RemoveEmptyEntries);
            string strRes = string.Join(" ",strs);
            return strRes;
        }

        //程序运行的过程中会产生无用的string,占据内存。
        //static string DealString(string strSrc)
        //{
        //    string strDesc = strSrc.Trim();
        //    for (int i = 0; i < strDesc.Length - 1;)
        //    {   //遇到连续空格的话,就删掉前面一个
        //        if (strDesc[i] == ‘ ‘ && strDesc[i+1] == ‘ ‘)
        //        {
        //            strDesc = strDesc.Remove(i, 1);
        //        }
        //        else
        //        {
        //            i++;
        //        }
        //    }
        //    return strDesc;
        //}
时间: 2024-10-22 11:11:44

与字符串有关的题目的相关文章

字符串的展开题目

题目描述 给定一个字符串,字符串包含数字.大小写字母以及括号(包括大括号,中括号,小括号),括号可以嵌套,即括号里面可以出现数字和括号. 按照如下规则对字符串进行展开,不需要考虑括号不成对的问题,不考虑数字后面没有括号的情况,即 2a2(b)不考虑. 数字表示括号里的字符串重复的次数,展开后的字符串不包含括号 将字符串进行逆序展开 123 输入abc2{de3[fg]} 输出gfgfgfedgfgfgfedcba 解法 利用栈进行计算,每次判断此时是否是右括号,如果是的话,拿到对应的左括号之前的

一些字符串有关的题目

模板可以在上一篇文章中找到. 因为最近都没有做codeforces,所以这篇文章的主要题目来源就是codeforces啦~ 需要这类题目可以在codeforces上找到hashing.string suffix structures之类的标签. 这些题目都是随便点的,所以有些题目和字符串并没有太大的关系 CF653F Paper Task(非常规比赛) 给一个长度为n的由左右括号做成的字符串,求它子串中不同括号序列的个数. (注意不是求是合法括号序列的子串数量,而是不同括号序列个数) 1<=n<

数组和字符串的基础题目学习(EPI)

学习的速度有些慢,脑袋转动的频率有些不是很高.不过今天的效率我觉得还是可以,应该不能称效率吧,就是整个感觉不错,感觉自己补充了很多的知识.其实G家和F家败了之后不知道看看算法题对接下来的找工作帮助是否会很大,但是看算法题目也是提高解决问题能力的一种方式吧,锻炼思维.僵化的思维实在有些不能忍受. 另外今天更是遇到之前leetcode之中的一些题目,当时那个题目第一时间没有思路,想了良久有了思路,有种灵机一动的感觉,今天碰到的时候竟然没有回想起来,即使自己的灵机一闪也无法依赖.那种灵机一动的时候人的

Hdu_3746 Cyclic Nacklace - 字符串周期规律题目

题目:把串补成最小周期>=2的串需要补的长度 规律:把一个串补成R^k串需要补的长度:补上最小周期 - 长度%最小周期 /************************************************ Author :DarkTong Created Time :2016/8/14 22:26:17 File Name :Hdu_3746.cpp *************************************************/ #include <bits

经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., "waterbottle" is a rotation of &qu

【编程题目】字符串的排列(字符串)★

53.字符串的排列(字符串).题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串 abc,则输出由字符 a.b.c 所能排列出来的所有字符串abc.acb.bac.bca.cab 和 cba. 这道题花了我一天,要好好总结! 思路:这道题目感觉有些难,主要是字符串中的字符可能会有重复.我的想法是把一共有多少种字符和每种字符出现的次数统计出来,每个位置对这些字符变量,下一个位置的可用字符减小,再遍历. /* 53.字符串的排列(字符串). 题目:输入一个字符串,打印出该字符串中字

【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎没有必要. 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输出就好了. /* 第 17 题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析:这道题是 2006 年 google 的一道笔试题. */

【编程题目】在字符串中删除特定的字符

63.在字符串中删除特定的字符(字符串).题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”. 我的思路:先扫描第一个字符串,判断是否是第二的字符串的字符,是则跳过,记录跳过多少个,后面的不被删除的就前移. /* 63.在字符串中删除特定的字符(字符串). 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符. 例如,输入”They are s

【编程题目】对称子字符串的最大长度 ★

73.对称字符串的最大长度(字符串).题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度.比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出 4. 虽然知道会有简单的方法,可脑子就是转不动了,只好用最常见的,对所有可能的字符串判断是否为对称的.再输出最大长度 O(N3) /* 73.对称字符串的最大长度(字符串). 题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度. 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“g