检查字符串的字符是否可以通过替换“_”使其成为非递减的
在本文中,我们将深入探讨字符串操作领域一个有趣的问题:如何检查给定字符串的字符是否可以通过替换“?”字符使其成为非递减的。这个问题为磨练您在 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