小5聊基础算法 - 实现字符串1到N位长度的组合关键词

Posted 小5聊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小5聊基础算法 - 实现字符串1到N位长度的组合关键词相关的知识,希望对你有一定的参考价值。

在本篇文章中,我们讲一起了解下基础算法的运用
在程序开发里,算法无处不在,掌握算法才能更好的提高程序效率和质量 

【算法返回效果】 

【实现的功能描述】

当前算法主要实现输入一定长度的字符串后,能够返回按顺序1个字符长度、2个字符长度、3个字符长度...、n个字符长度的泛型List结果集合

【基础算法分析】

比如输入的字符串:CSDN博客-专业IT技术发表平台

目标返回的泛型List集合 1)1位长度的字符:C、S、D 、N、博 、客、-、专、业、I、T、技、术、平、台

2)2位长度的字符:CS、SD、DN 、N博客、博客、....

3)3位长度的字符:CSD 、SDN、...

...

从上面分析可以知道,不同位数组合个数,当

1)1位长度的个数=字符串长度的个数

2)2位长度的个数=字符串长度个数减去-1

3)3位长度的个数=字符串长度个数减去-2

...

n)n位长度的个数=字符串长度个数减去-(n-1)

由上面规律就可以进行长度位数的循环

获取组合字符串

1)2位组合:第1、2位作为一个组合,第2、3位又是新的组合,第3、4位组合...

2)3位组合:第1、2、3位作为一个组合,第2、3、4位又是新的组合,第3、4、5位组合...

以此类推,就可以得到以下简单算法,每次循环长度位数时,再通过循环长度每个字符,通过位数进行组合成新的字符串,当此一次满足位数时,赋值到List泛型集合里,下一次再组合时,就可以进行长度位数的截取获得。

1)第一次循环字符串获得的值:C

2)第一次循环字符串获得的值:CS,这个时候满足了位数循环i=2时,添加到List泛型集合里

3)第一次循环字符串获得的值:CSD,这个时候满足了位数循环i=2且长度大于位数2,则截取后两位数添加到List泛型集合里

...

一次类推即可得到全部组合

string text = "CSDN博客-专业IT技术发表平台";
if (true)

    List<string> tempList = new List<string>();

    //长度的组合词
    for (int i = 1; i <= text.Length; i++)
    
        string tempValue = "";
        foreach (char item in text)
        
            tempValue += item.ToString();

            if (tempValue.Length >= i)
            
                if (tempValue.Length > i)
                
                    tempValue = tempValue.Substring(1, i);
                

                tempList.Add(tempValue);
            
        
    

以上是关于小5聊基础算法 - 实现字符串1到N位长度的组合关键词的主要内容,如果未能解决你的问题,请参考以下文章

python每日经典算法题5(基础题)+1(较难题)

小5聊使用正则表达式进行简单(匹配字符串算法)

Java实现随机生成由字母数字组合的N位随机数

小5聊C#基础之调用cmd执行命令并且执行遇到需要输入Y或N的情况

小5聊Python3 使用selenium模块实现简单爬虫系列一

对称加密算法之DES介绍