字符串子串_字符串子串个数计算 - CSDN
精华内容
参与话题
  • 求解字符串所包含子串的个数

    万次阅读 2018-03-01 10:38:58
    重要的事情说三遍)备注:空串属于子串2、字符均不相同:n个字符构成的字符串,假设每个字符都不一样,问有多少个子答案:n(n+1)/2+1友情提示:每个字符均不相同解析:包含1个字符的子串共n个包含2个字符的...

    1、子串:串中任意个连续的字符组成的子序列称为该串的子串(连续、连续、连续!重要的事情说三遍

    • 备注:空串属于子串

    2、串中字符均不相同:n个字符构成的字符串,假设每个字符都不一样,问有多少个子串

    • 答案:n(n+1)/2+1
    • 友情提示:每个字符均不相同
    • 解析:
      • 包含1个字符的子串共n个
      • 包含2个字符的子串共n-1个
      • 包含3个字符的子串共n-2个
      • 包含4个字符的子串共n-3个
      • .。。。。。
      • 包含n个字符的子串共1个
      • 空串1个
      • 综上所述:子串个数共:1+2+3+。。。+n+1(空串)=n(n+1)/2+1
    • 实例应用:若串S=′software′,其子串的数目是()

      • 解析:n(n+1)/2+1=8(8+1)/2+1=37

    3、串中字符出现重复:字符串www.qq.com所有非空子串(两个子串如果内容相同则只算一个)个数是()

    • 答案:50
    • 备注:存在相同字符,所以计算方法为总个数减去重复个数,即n(n+1)/2+1-重复个数
    • 解析:包含重复子串共:n(n+1)/2+1=10(10+1)/2+1=55,减去重复:2个w,1个ww,1个q,1个.,所以共55-5=50个
    展开全文
  • 字符串中查找子串

    千次阅读 2018-07-10 16:42:30
    #include<iostream> #include<stdlib.h> using namespace std; class Solution { public: char *strFind(char * string, char *substring) { if (string == NULL &... ...
    
    
    #include<iostream>
    #include<stdlib.h>
    using namespace  std;
    class Solution
    {
    public:
    	char  *strFind(char * string, char *substring)
    	{
    		if (string == NULL &&substring == NULL)
    			return NULL;
    		int m = strlen(string);
    		int n = strlen(substring);
    		int j;
    		if (m < n)
    			return NULL;
    		for (int i = 0; i <= m - n; i++)
    		{
    			for (j = 0; j <= m - n; j++)
    			{
    				if (string[i + j] != substring[j])
    					break;
    			}
    			if (j == n)
    				return string + i;
    
    		}
    	}
    };
    
    void main()
    {
    	char *string = "ababcabcacbab";
    	char *substring = "abcac";
    	Solution S1;
    	cout<<S1.strFind(string, substring);
    	system("pause");
    
    }

    使用最基础的BF算法,时间复杂度为O((m-n+1)*n)


    展开全文
  • java字符串的子串的获取和删除

    千次阅读 2019-01-05 09:01:07
    获取字符串子串: sb.substring(5);//返回从指定下标开始截取的子字符串 sb.substring(2,4);//返回从指定下标开始截取的子字符串 代码: public class Test { /**在原字符中插入新字符**/ public...

    获取字符串子串:

    sb.substring(5);//返回从指定下标开始截取的子字符串
    sb.substring(2,4);//返回从指定下标开始截取的子字符串
    

    代码:

    public class Test {
         
    	 
    	 /**在原字符中插入新字符**/
         public static void main(String[] args){
        	 
        	 StringBuffer sb = new StringBuffer("从前有座庙,庙里有个老和尚和小和尚");//建立一个字符缓存区
        	 System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容
        	 
        	 // sb.substring(6)
        	 String str1 = sb.substring(6); //返回从指定下标开始的子字符串,及从6开始的子字符串
        	                                //(这里的6是字符缓存区的下标,及第7个字符开始)
       
        	 System.out.println("新字符缓存区中的内容为:"+str1);//输出新字符缓存区中的内容
        	
        	 
        	 
        	 //sb.substring()
        	 String str2 = sb.substring(7,10); //返回从下标7到10的子字符串,
        	                                   //(这里的7是字符缓存区的下标,及第8个字符开始)
        	                                   //(这里的10是字符缓存区的下标,及第11个字符结束)
        	 System.out.println("新字符缓存区中的内容为:"+str2);//输出新字符缓存区中的内容
        	
    
         }
           
    }
    

    运行结果:

    原字符缓存区中的内容为:从前有座庙,庙里有个老和尚和小和尚
    新字符缓存区中的内容为:庙里有个老和尚和小和尚
    新字符缓存区中的内容为:里有个
    

    /*************************************************************************************************************************************/

    /************************************************************************************************************************************/

    删除字符或字符串

    sb.deleteCharAt(8); //删除下标位置为8的字符
    sb.delete(1, 3); //删除下标位置在1到3的字符,包括1但不包括3
    

    代码:

    public class Test {
         
    	 
    	 /**在原字符中删除字符或字符串**/
         public static void main(String[] args){
        	 
        	 StringBuffer sb = new StringBuffer("从前有座庙,庙里有个老和尚和小和尚");//建立一个字符缓存区
        	 System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容
        	 
        	 
        	 sb.deleteCharAt(8); //删除下标位置为8的字符
       
        	 System.out.println("新字符缓存区中的内容为:"+sb);//输出新字符缓存区中的内容
        	
        	 
        	 
        	 
        	sb.delete(1, 3); //删除下标位置在1到3的字符,包括1但不包括3
        	                                   
        	System.out.println("新字符缓存区中的内容为:"+sb);//输出新字符缓存区中的内容
        	
    
        	 
         }
           
    }
    

    运行结果:

    原字符缓存区中的内容为:从前有座庙,庙里有个老和尚和小和尚
    新字符缓存区中的内容为:从前有座庙,庙里个老和尚和小和尚
    新字符缓存区中的内容为:从座庙,庙里个老和尚和小和尚
    
    展开全文
  • python,求解字符串的所有子串

    千次阅读 2018-09-04 10:34:36
    网上的一种解法: def cut(s: str): results = [] num = 0 # x + 1 表示子字符串长度 for x in range(len(s)): # i 表示偏移量 for i in range(len(s) - x): results.append(s[i:i + x + ...

    网上的一种解法:

    def cut(s: str):
        results = []
        num = 0
        # x + 1 表示子字符串长度
        for x in range(len(s)):
            # i 表示偏移量
            for i in range(len(s) - x):
                results.append(s[i:i + x + 1])
        return results

    执行结果:
    以“1234”为例,结果为–>[‘1’, ‘2’, ‘3’, ‘4’, ‘12’, ‘23’, ‘34’, ‘123’, ‘234’, ‘1234’]
    分析
    子字符串中并没有“24”,“124”,说明分的效果并不是这么好
    改进之后:

    def cut2(s: str,n):
        results = []
        num = 0
    
        # x + 1 表示子字符串长度
        for x in range(len(s)):
            # i 表示偏移量
            for i in range(len(s) - x):
                if x == 0:
                    results.append(s[i:i + x + 1])
                elif x < 2:
                    for j in range(len(s) - x - i):
                        results.append(s[i] + s[j + x + i])
                else:
                    for j in range(len(s) - x - i):
                        results.append(s[i:i+x] + s[j + x + i])
        #判断子字符串中能被n整除的个数
        for y in results:
            if int(y) % int(n) == 0:
               num = num+1
    
    
    
        return num

    这里添加了,判断了子字符串能否被n整除
    执行结果:
    还是输入字符串“1234”,所有子字符串为:

    ['1', '2', '3', '4', '12', '13', '14', '23', '24', '34', '123', '124', '234', '1234']
    展开全文
  • 字符串的子串计算方法

    千次阅读 2019-08-24 16:20:57
    字符串的任意片段都是子串: 对于字符不重复的长度为n的字符串: 子串公式(n*(n+1))/2 + 1-重复计算的字符串数量。 示例: 字符串的子串,就是字符串中的某一个连续片段。截取一个字符串长度需要一个起始位置和...
  • 输出字符串的子串

    千次阅读 2018-08-16 17:25:49
    我们经常碰到这样一个问题,怎样快速输出一个字符串的子串,这种问题通常有两种形式: (1)输出连续子串 例如:假设字符串的长度为n,其非空子的数目为你n(n+1)/2个。例如字符串“abc“的连续子串有 a,b,c,ab,...
  • 字符串子串数目的方法

    万次阅读 2019-03-29 16:02:25
    最近在做一些算法题,经常遇到字符串的问题,需要计算字符串子串的数目,字符串的子串数目为 n(n+1)/2 + 1,这个答案是如何求得的呢? 我们都知道子串是一个字符串中连续的一段,其实你可以把它抽象为周围有边界...
  • 字符串所有子串(Java)

    千次阅读 2019-06-27 16:38:58
    public class SumNumString { public static int sumOfString(String str) { if(str == null || str.length() <=0 ) return 0; int sum = 0; for(int i = 0; i <... ...
  • 字符串的子串个数

    万次阅读 2017-06-21 20:58:54
    长度为n的字符串 1、有n(n+1)/2 +1个子; 2、非空子:n(n+1)/2; 3、非空真子:n(n+1)/2– 1。
  • shell中取字符串子串的几种方式

    万次阅读 2010-11-17 00:40:00
    substr(源字符串,开始索引,长度) 开始索引以0开始 示例: awk '{$a=substr($0,0,2);print $a;}' filename 假设文件中为只有一行为abcdefg,则返回结果为ab <br /> (2)expr substr ...
  • SQL Server 中查找字符串中的子串

    万次阅读 2016-08-27 17:55:42
    对于SQL Server中查找字符串的子串这个问题,许多人第一个想法是使用like,没错,但是如果出现如下的情况使用like就无法解决: 查找一个表中的列中的数据是否是另一个表中一个列的数据的子串,这时由于两个列都是...
  • 使用C++求字符串的所有子串

    千次阅读 2019-05-06 15:30:10
    使用C++求字符串的所有子串,如字符串“abcd”,它的全部子串应该为a,ab,abc,b,bc,bcd,c,cd,d。使用C++编写程序。结果中包括原字符串 结果 代码 #include<iostream> #include<string.h> #...
  • 字符串的子串的个数

    千次阅读 2019-06-25 21:57:13
    字串:中任意个连续的字符组成的子序列称为该的字串。 空串属于字串 (1)长度为n的字符串,如果字符各不相同,则字串的个数为n(n+1)/2+1 解析: 包含1个字符的子串共n个 包含2个字符的子串共n-1个 ...
  • C#中的取字符串的子串

    千次阅读 2012-02-20 15:17:02
    现在有一字符串: "1234567/54345 "  我现在要取 "/ "后面的 "54345 " string s= "1234567/54345 ";  string[] arr = s.Split(new char[]{ '/ '});// 返回字符串数组{ "12345567 ", "54345 "}  要取54345只需...
  • C++字符串常用操作-查找子串

    千次阅读 2019-02-23 20:40:16
    string::npos是一个比字符串长度还要大的整数,所以查找的子串的位置一定不会等于它 #include #include &lt;string.h&gt; using namespace std; int main() { string s=“abcdef”; string s1=“cd”;//...
  • shell中取字符串子串的3种方式

    千次阅读 2017-12-06 17:56:25
    substr(源字符串,开始索引,长度) 开始索引以0开始 示例: awk '{$a=substr($0,0,2);print $a;}' filename 假设文件中为只有一行为abcdefg,则返回结果为ab (2)expr substr  expr substr 字符串 开始...
  • 计算字符串中子的个数

    千次阅读 2018-09-26 21:12:20
    package work; import java.util.Scanner; public class A48 { public static void main(String[] args) ...//字符串 String str2;//子字符串 int ans=0,start=0; Scanner cin =new Scanner(System...
  • 已知两个字符串A,B,判断B是否是A 的子串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include &lt;bits/stdc++.h&gt; using namespace std; ...
  • 字符串的全部子序列(递归)

    万次阅读 2019-10-19 23:27:40
    扩展:子序列和子串.... 比如“abc”的子串有“”(空串),"a", "b", "c", "ab", "bc", "abc",共7个,子串个数n(n+1)/2+1,用3*4/2+1也可以算出来为7 但是没有ac,不是相邻的,ac属于子序列,子序列个数计算是2^...
  • C语言版字符串中获得子串的函数,获取字符串中指定位置的子串。如同C++中的string类型、VC++中CString类型、Objective-C的NSStringd等字符串类中的获取子串的方法,C语言版可以通用于各大平台,方便进行代码移植。
1 2 3 4 5 ... 20
收藏数 4,885
精华内容 1,954
关键字:

字符串子串