檢查字串的字元是否可以透過替換“_”使其成為非遞減的
在本文中,我們將深入探討字串操作領域一個有趣的問題:如何檢查給定字串的字元是否可以透過替換“?”字元使其成為非遞減的。這個問題為磨練您在 C++ 中的字串操作和條件檢查技能提供了絕佳的機會。
問題陳述
給定一個由字母字元和問號(?)組成的字串,確定這些字元是否可以透過替換“?”使其成為非遞減的。
非遞減條件意味著對於字串中的每兩個相鄰字元,第二個字元的 ASCII 值不小於第一個字元的 ASCII 值。
方法
我們將使用一種簡單的方法來解決這個問題:
從左到右遍歷字串。
如果遇到“?”,則將其替換為其前面的字元(除非它是第一個字元,在這種情況下將其替換為“a”)。
最後,檢查結果字串是否為非遞減的。
示例
我們將使用一種簡單的方法來解決這個問題:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// Function to check if a string can be made non-decreasing by replacing '?'s
bool checkNonDecreasing(char *s) {
int n = strlen(s);
// If the first character is '?', replace it with 'a'
if (s[0] == '?')
s[0] = 'a';
// Iterate through the string
for (int i = 1; i < n; i++) {
// If the current character is '?', replace it with the previous character
if (s[i] == '?')
s[i] = s[i-1];
// If the current character is less than the previous character, the string cannot be made non-decreasing
if (s[i] < s[i-1])
return false;
}
return true; // String can be made non-decreasing
}
int main() {
char s[] = "ac?xy";
bool result = checkNonDecreasing(s);
// Print the result
if (result)
printf("Yes, the string can be made non-decreasing by replacing '?'s.\n");
else
printf("No, the string cannot be made non-decreasing by replacing '?'s.\n");
return 0;
}
輸出
Yes, the string can be made non-decreasing by replacing '?'s.
#include<bits/stdc++.h>
using namespace std;
// Function to check if a string can be made non-decreasing by replacing '?'s
bool checkNonDecreasing(string s) {
int n = s.size();
// If the first character is '?', replace it with 'a'
if (s[0] == '?') s[0] = 'a';
// Iterate through the string
for (int i = 1; i < n; i++) {
// If the current character is '?', replace it with the previous character
if (s[i] == '?') s[i] = s[i-1];
// If the current character is less than the previous character, the string cannot be made non-decreasing
if (s[i] < s[i-1]) return false;
}
return true; // String can be made non-decreasing
}
int main() {
string s = "ac?xy";
bool result = checkNonDecreasing(s);
// Print the result
if(result)
cout << "Yes, the string can be made non-decreasing by replacing '?'s.\n";
else
cout << "No, the string cannot be made non-decreasing by replacing '?'s.\n";
return 0;
}
輸出
Yes, the string can be made non-decreasing by replacing '?'s.
public class Main {
// Function to check if a string can be made non-decreasing by replacing '?'s
public static boolean checkNonDecreasing(String s) {
int n = s.length();
char[] arr = s.toCharArray();
// If the first character is '?', replace it with 'a'
if (arr[0] == '?')
arr[0] = 'a';
// Iterate through the string
for (int i = 1; i < n; i++) {
// If the current character is '?', replace it with the previous character
if (arr[i] == '?')
arr[i] = arr[i-1];
// If the current character is less than the previous character, the string cannot be made non-decreasing
if (arr[i] < arr[i-1])
return false;
}
return true; // String can be made non-decreasing
}
public static void main(String[] args) {
String s = "ac?xy";
boolean result = checkNonDecreasing(s);
// Print the result
if (result)
System.out.println("Yes, the string can be made non-decreasing by replacing '?'s.");
else
System.out.println("No, the string cannot be made non-decreasing by replacing '?'s.");
}
}
輸出
Yes, the string can be made non-decreasing by replacing '?'s.
# Function to check if a string can be made non-decreasing by replacing '?'s
def checkNonDecreasing(s):
n = len(s)
s = list(s)
# If the first character is '?', replace it with 'a'
if s[0] == '?':
s[0] = 'a'
# Iterate through the string
for i in range(1, n):
# If the current character is '?', replace it with the previous character
if s[i] == '?':
s[i] = s[i-1]
# If the current character is less than the previous character, the string cannot be made non-decreasing
if s[i] < s[i-1]:
return False
return True # String can be made non-decreasing
s = "ac?xy"
result = checkNonDecreasing(s)
# Print the result
if result:
print("Yes, the string can be made non-decreasing by replacing '?'s.")
else:
print("No, the string cannot be made non-decreasing by replacing '?'s.")
輸出
Yes, the string can be made non-decreasing by replacing '?'s.
checkNonDecreasing 函式以字串 s 作為輸入,並返回一個布林值,指示字串的字元是否可以透過替換“?”使其成為非遞減的。
在此測試用例中,輸入字串為“ac?b”。checkNonDecreasing 函式以該字串作為引數被呼叫,結果是一個布林值,該值被打印出來。
結論
檢查字串的字元是否可以透過替換“?”使其成為非遞減的,這是一個測試您對字串操作和 ASCII 值理解的問題。透過練習此類問題,您可以增強您在 C++ 中的字串處理能力。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP