字符串是一种特定的对象,它表示数据字符的序列和流动。字符串是一种数据容器,总是以文本格式表示。它还用于概念、比较、拆分、连接、替换、修剪、长度、内部化、相等、比较和子字符串操作。子字符串()是一种数据精炼过程,它从开始到结束提取保存的数据之间的数据。子字符串()不会改变原始字符串。在数据集中,当我们有不同的字符时,它们可以被表示为不同的数据元素。例如:'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,则我们只需要将其转换为一个字符串。在这里,我们将在不同的语言环境中编写相同的逻辑。
#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
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
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中文网其他相关文章!