最小改動字串使得所有子字串都不相同
字串是一種特定的對象,它表示資料字元的序列和流動。字串是一種資料容器,總是以文字格式表示。它也用於概念、比較、拆分、連接、替換、修剪、長度、內部化、相等、比較和子字串操作。子字串()是一種資料精煉過程,它從開始到結束提取保存的資料之間的資料。子字串()不會改變原始字串。在資料集中,當我們有不同的字元時,它們可以被表示為不同的資料元素。例如:'a'和'r'是不同的,而'r'和'r'是相同的。所以,一個字串比如說,橘子包含6個不同的字元。同樣,字串蘋果只包含4個不同的字元。
假設,"s" 是一個字串,我們需要找到所有子字串所需的最小改變次數,以使字串變得不同。
字串的長度 - 26
給定輸入− T 是第一行的測試案例,為一個整數。對於每個測試案例,只會有一行包含26個字元。
輸出 - 我們將獲得每個測試案例的最小變化次數。
-
邏輯方法流程的限制
1
1
在今天的文章中,我們將學習如何修改字串以使所有子字串都不同。
使子字串不同的演算法
這是一種可能的演算法,用於對字串進行操作,使得所有子字串都是不同的,同時盡量減少改變。
第一步-開始。
第二步− 使用兩個巢狀循環來產生子字串。
第三步 - 外循環從 i = 0,字串長度減1。
第4步 - 內循環從 j = 0,字串長度減1。
第五步− 使用零值建立計數變數。
步驟6− 在外部迴圈內部,建立一個distinct_character變數。
第7步-建立頻率數組。
Step 8− Set all elements zero.
第9步 - 檢查字串[j] - 'a'的頻率是否為零。
步驟10− 如果為零,則將其增加1。
步驟11− 否則,將其分解為內部循環。
第12步- 如果計數大於零,則傳回計數。
第13步- 否則,返回-1。
第14步- 終止。
建立所有不同子字串的語法
string.substring(start, end)
在這個語法中,我們可以看到如何對一個字串進行最小的更改,使得所有的子字串都不相同。
參數
開始 - 需要宣告一個起始位置。這裡的第一個字元的索引是0。
End − 它是一個可選的過程,位於結束位置(包括但不限於)。
方法
方法1−找到使字串的所有子字串都變成不同的最小更改次數。
找到最小的更改次數,使得字串的所有子字串都變得不同
在這個方法中,我們將學習如何讓所有的子字串都不同。在這裡,每個字元都必須不同。我們只需要找出字元的數量。如果字串的長度超過26,則我們只需要將其轉換為一個字串。在這裡,我們將在不同的語言環境中編寫相同的邏輯。
範例1:使用C
#include <bits/stdc++.h> using namespace std; const int MAX_CHAR = 26; int minChanges(string &str) { int n = str.length(); if (n > MAX_CHAR) return -1; int dist_count = 0; int count[MAX_CHAR] = {0}; for (int i = 0; i < n; i++) { if (count[str[i] - 'a'] == 0) dist_count++; count[(str[i] - 'a')]++; } return (n - dist_count); } int main() { string str = "aebaecedabbeedee"; cout << minChanges(str); return 0; }
輸出
11
範例2:透過使用Java
import java.lang.*; import java.util.*; public class tutorialspoint { static final int MAX_CHAR = 26; public static int minChanges(String str) { int n = str.length(); if (n > MAX_CHAR) return -1; int dist_count = 0; int count[] = new int[MAX_CHAR]; for(int i = 0; i < MAX_CHAR; i++) count[i] = 0; for (int i = 0; i < n; i++) { if(count[str.charAt(i)-'a'] == 0) dist_count++; count[str.charAt(i)-'a']++; } return (n-dist_count); } public static void main (String[] args) { String str = "aebaecedabbeedee"; System.out.println(minChanges(str)); } }
輸出
11
範例1:使用Python
MAX_CHAR = [26] def minChanges(str): n = len(str ) if (n > MAX_CHAR[0]): return -1 dist_count = 0 count = [0] * MAX_CHAR[0] for i in range(n): if (count[ord(str[i]) - ord('a')] == 0) : dist_count += 1 count[(ord(str[i]) - ord('a'))] += 1 return (n - dist_count) if __name__ == '__main__': str = "aebaecedabbeedee" print(minChanges(str))
輸出
11
結論
今天,在本文中,我們學習瞭如何透過最小的改變使所有子字串都不同。在這裡,我們透過在C 、Java和Python中遵循所述演算法創建了一些可能的程式碼。希望這能幫助您對這個主題有更全面的了解。
以上是最小改動字串使得所有子字串都不相同的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

標題:Golang中判斷字串是否以指定字元結尾的方法在Go語言中,有時候我們需要判斷一個字串是否以特定的字元結尾,這在處理字串時十分常見。本文將介紹如何使用Go語言來實現這項功能,同時提供程式碼範例供大家參考。首先,讓我們來看看Golang中如何判斷一個字串是否以指定字元結尾的方法。 Golang中的字串可以透過索引來取得其中的字符,而字串的長度可

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

Golang中如何檢查字串是否以特定字元開頭?在使用Golang程式設計時,經常會遇到需要檢查一個字串是否以特定字元開頭的情況。針對這項需求,我們可以使用Golang中的strings套件所提供的函數來實現。接下來將詳細介紹如何使用Golang檢查字串是否以特定字元開頭,並附上具體的程式碼範例。在Golang中,我們可以使用strings套件中的HasPrefix

Go語言是一種強大且靈活的程式語言,它提供了豐富的字串處理功能,包括字串截取。在Go語言中,我們可以使用切片(slice)來截取字串。接下來,將詳細介紹如何在Go語言中截取字串,並附上具體的程式碼範例。一、使用切片截取字串在Go語言中,可以使用切片表達式來截取字串的一部分。切片表達式的語法如下:slice:=str[start:end]其中,s

解決PHP中16進位轉字串出現中文亂碼的方法在PHP程式設計中,有時候我們會遇到需要將16進位表示的字串轉換為正常的中文字元的情況。然而,在進行這個轉換的過程中,有時會遇到中文亂碼的問題。這篇文章將為您提供解決PHP中16進位轉字串出現中文亂碼的方法,並給出具體的程式碼範例。使用hex2bin()函數進行16進位轉換PHP內建的hex2bin()函數可以將1

PHP字串比對技巧:避免模糊包含表達式在PHP開發中,字串比對是常見的任務,通常用於尋找特定的文字內容或驗證輸入的格式。然而,有時候我們需要避免使用模糊的包含表達式來確保匹配的準確性。本文將介紹一些在PHP中進行字串匹配時避免模糊包含表達式的技巧,並提供具體的程式碼範例。使用preg_match()函數進行精確比對在PHP中,可以使用preg_mat

PHP字串操作:有效去除空格的實用方法在PHP開發中,經常會遇到需要對字串進行去除空格操作的情況。去除空格可以讓字串更加整潔,方便後續的資料處理和顯示。本文將介紹幾種有效的去除空格的實用方法,並附上具體的程式碼範例。方法一:使用PHP內建函數trim()PHP內建函數trim()可以移除字串兩端的空格(包括空格、製表符、換行符等),非常方便且簡單易用
