빈 문자열을 얻기 위해 제거된 문자 인덱스의 합과 같은 문자열 조작과 관련된 개념은 프로그래밍 과제 및 대회에서 자주 사용됩니다. 그런 다음 제거된 문자 인덱스의 합계를 사용하여 결과가 계산됩니다.
빈 문자열을 얻기 위해 문자의 인덱스 합계를 제거하는 것은 다양한 프로그래밍 어려움과 문제를 해결하는 데 사용할 수 있는 문자열 조작의 실용적인 아이디어입니다.
빈 문자열을 생성하기 위해 제거되는 문자 인덱스의 총 개수를 찾으려면 먼저 문제 설명과 주어진 기준을 이해해야 합니다.
문자열 S가 주어졌을 때, 문자열을 비워둔 채로 S에서 제거할 수 있는 총 문자 수를 결정하는 것이 목표입니다. 예를 들어, S = "code"인 경우 위치 0, 4, 5 및 6의 문자를 제거하여 빈 문자열을 얻을 수 있습니다. 이 지수의 합은 0 + 4 + 5 + 6 = 15입니다.
그러나 스택을 사용하는 것은 이 문제를 해결하기 위한 일반적인 전략입니다. 문자열 S를 반복하여 각 반복에서 각 문자를 제거할 수 있는지 여부를 확인할 수 있습니다. 인덱스를 제거할 수 있으면 스택에 추가할 수 있습니다. 제거할 수 없는 경우 기존 문자와 함께 스택 맨 위에 있는 문자를 제거할 수 있는지 확인할 수 있습니다. 제거할 수 있으면 그렇게 하고 해당 인덱스를 현재 문자의 인덱스에 추가합니다. 이 프로세스는 문자열의 모든 문자가 처리될 때까지 반복될 수 있습니다.
다음 의사코드는 이 전략을 보여줍니다 -
으아아아이 의사코드에서는 합계 변수와 빈 스택이 모두 0으로 초기화됩니다. 그런 다음 for 루프를 사용하여 문자열 S를 반복적으로 반복합니다. 각 문자를 확인하여 맨 위에 있는 문자와 함께 제거할 수 있는지 확인하세요. 스택(스택이 비어 있지 않은 경우) 가능하다면 캐릭터가 스택에서 제거되고 해당 인덱스와 게임 내 캐릭터의 합이 sum 변수에 추가됩니다. 이 경우 해당 인덱스를 스택에 추가하고 제거하려고 합니다. 그런 다음 합계 변수를 반환합니다.
이 방법의 시간 복잡도와 공간 복잡도는 모두 O(n)입니다. 여기서 n은 문자열 S의 길이이고 n은 S에서 삭제할 수 있는 최대 문자 수입니다.
지정된 조건에 따라 빈 문자열을 생성하여 제거되는 총 문자 인덱스 수를 결정하는 C++ 구문은 다음과 같습니다. -
먼저 사용자가 입력한 문자열을 가져옵니다.
n의 시작 값을 문자열 str의 길이로 설정했습니다.
다음으로 cnt를 0으로 초기화하여 문자 "U"의 발생 횟수를 계산합니다.
sum의 초기값을 0으로 설정하여 제거된 문자 인덱스의 총 개수를 저장합니다.
그 후 str을 반복하여 아래와 같이 각 문자를 확인합니다. -
문자가 "U"이면 cnt를 올리고 합계를 (n - i - 1) + 2 * cnt만큼 늘립니다.
문자가 "U"가 아닌 경우 i + 2 * cnt를 추가하여 합을 늘립니다.
마지막으로 sum 값을 출력합니다.
NOTE - 이 질문의 구체적인 내용이 명시적으로 명시되어 있지 않으므로 이러한 조건으로 가정합니다.
으아아아정의된 조건에서 빈 문자열을 생성하여 제거된 문자 인덱스의 총 개수를 계산하는 C++ 알고리즘 -
1단계 - 먼저 문자열 변수를 정의하고 사용자가 제공한 문자열을 입력합니다.
2단계 - 문자열의 문자를 담을 스택을 만듭니다.
3단계 - 문자열 루프를 문자별로 입력합니다.
4단계 - 현재 문자가 비어 있으면 스택에 밀어 넣습니다.
5단계 - 현재 문자와 스택의 최상위 문자가 동일하면 스택에서 최상위 문자를 팝합니다.
6단계 - 현재 문자가 스택 맨 위에 있는 문자와 다른 경우 해당 문자를 스택에 밀어 넣습니다.
7단계 - 루프 후에는 지울 수 없는 문자만 스택에 남게 됩니다.
8단계 - 아직 스택에 있는 문자 인덱스를 추가합니다.
9단계 - 총 인덱스 수를 표시합니다.
다음 조건을 사용하여 문자 제거 인덱스의 합을 계산하여 빈 문자열을 생성합니다. -
이 예에서는 "abacbdc" 문자열이 입력으로 사용되었습니다. 이 코드는 두 개의 인덱스 i와 j를 사용하여 문자열을 처음부터 끝까지 순회합니다. 문자열에서 문자를 제거하는 조건은 다음과 같습니다.
s[i]와 s[j]가 같으면 두 인덱스를 모두 문자열 중앙으로 이동합니다.
s[i]가 s[j]보다 작으면 인덱스 j의 문자를 삭제하고 인덱스 i+1만큼 인덱스 합을 늘립니다.
s[i]가 s[j]보다 큰 경우 인덱스 i의 문자를 삭제하고 인덱스 j+1만큼 인덱스 합을 늘립니다.
모든 캐릭터가 제거된 후 인덱스 합계를 콘솔에 보고합니다.
단 예시일 뿐이며, 문제의 성격에 따라 캐릭터 삭제 요구사항이 변경될 수 있다는 점 참고해주세요.
#include <iostream> #include <string> using namespace std; int main() { string s = "abacbdc"; int sum = 0; int i = 0; int j = s.length() - 1; while (i < j) { if (s[i] == s[j]) { i++; j--; } else if (s[i] < s[j]) { sum += i + 1; i++; s.erase(j, 1); j--; } else { sum += j + 1; j--; s.erase(i, 1); i++; } } cout << "Sum of indices of characters removed: " << sum << endl; return 0; }
Sum of indices of characters removed: 6
str 字符串和字符是 sum_of_indices 函数的输入。然后,迭代字符串,确定每个字符是否等于 c。如果是这样,函数会递减循环索引以考虑删除的字符,并将字符的索引添加到运行总数中,然后使用擦除技术从字符串中删除字符。然后该函数返回已消除的字符索引的总数。
示例字符串 str 和字符 c 在 main 函数中定义,这两个输入用于调用 sum_of_indices 函数。总数作为结果打印到控制台。
#include <iostream> #include <string> using namespace std; int sum_of_indices(string str, char c) { int sum = 0; for (int i = 0; i < str.length(); i++) { if (str[i] == c) { sum += i; str.erase(i, 1); i--; } } return sum; } int main() { string str = "abcbcdc"; char c = 'c'; int sum = sum_of_indices(str, c); cout << "Sum of indices of characters removed to obtain empty string: " << sum << endl; return 0; }
Sum of indices of characters removed to obtain empty string: 9
需要操作字符串及其索引来解决根据提供的条件计算消除的字符索引之和以获得空字符串的问题。为了解决这个问题,循环遍历字符串,如果两个连续字符相同,则在更新索引之前删除它们。一旦我们有了一个空字符串,我们就可以添加被删除的字符的索引以产生一个空字符串。
有许多解决方案需要解决,例如利用堆栈或队列来跟踪要删除的字符,或者使用递归来迭代地从字符串中删除字符。
위 내용은 주어진 조건에 따라 다음을 중국어로 번역하십시오. 주어진 조건에 따라 빈 문자열의 인덱스 합계를 얻으려면 문자를 제거하십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!