
字符串是一种特定的对象,它表示数据字符的序列和流动。字符串是一种数据容器,总是以文本格式表示。它还用于概念、比较、拆分、连接、替换、修剪、长度、内部化、相等、比较和子字符串操作。子字符串()是一种数据精炼过程,它从开始到结束提取保存的数据之间的数据。子字符串()不会改变原始字符串。在数据集中,当我们有不同的字符时,它们可以被表示为不同的数据元素。例如:'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++
#includeusing 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中遵循所述算法创建了一些可能的代码。希望这能帮助您对这个主题有一个更全面的了解。










