C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#を使用して文字を繰り返さずに、指定された文字列から最長の部分文字列の長さを見つけるにはどうすればよいですか?


指定された文字列入力から、2つのポインターiとjを使用して、スライディングウィンドウ手法を使用します。 iとjはどちらも、文字列内の同じ文字を指します。文字列をトラバースしてリストに追加します。繰り返される文字が見つかった場合は、リストから削除します。それ以外の場合は、リストに追加します。

例1

入力 − s ="abcabcbb"

出力 − 3

説明 −答えは「abc」で、長さは3です。

例2

入力 − s ="bbbbb"

出力 − 1

説明 −答えは「b」で、長さは1です。

時間計算量 − O(N)

スペースの複雑さ − O(N)

public class Arrays{
   public int LongestSubstringWithNoRepeatingCharacters(string s){
      List<char> c = new List<char>();
      int iPointer = 0;
      int jpointer = 0;
      int max = 0;
      while (jpointer < s.Length){
         if (c.Contains(s[jpointer])){
            c.Remove(s[iPointer]);
            iPointer++;
         }
         else{
            max = Math.Max(c.Count(), max);
            c.Add(s[jpointer]);
            jpointer++;
         }
      }
      return max;
   }
}

static void Main(string[] args){
   int res = s.LongestSubstringWithNoRepeatingCharacters("abcabcbb");
   Console.WriteLine(res);
}

出力

2

  1. C言語を使用して特定の文字列から母音を削除するにはどうすればよいですか?

    指定された文字列から母音を削除するために実装するために使用するロジックは次のとおりです- for(i=0; i<len; i++) //repeat until i<len{    if(str[i]=='a' || str[i]=='e' || str[i]=='i' || //checking to delete the vowels    str[i]=='o' || str[i]=='u' || str[i]=='A' ||  

  2. C++で指定された開始文字からの最長の連続パスの長さを検索します

    異なる文字のマトリックスが与えられます。 1つの文字から始めて、現在の文字よりも大きいすべての文字をトラバースすることにより、最長のパスを見つける必要があります。文字は互いに連続しています。 Eから始まります。 最長のパスを見つけるために、深さ優先探索アルゴリズムを使用します。 DFS中に、いくつかのサブ問題が複数回発生する場合があります。そのサブ問題の計算を何度も回避するために、動的計画法のアプローチを使用します。 例 #include<iostream> #define ROW 3 #define COL 3 using namespace std; // tool