给你一个+仅+由字符+‘a’+和+‘b’+组成的字符串+s+。如果字符串中+每个+‘a’+都出现在+每个+‘b’+之前,返回+true+;否则,返回+false+。C语言
时间: 2023-12-15 08:05:13 浏览: 65
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool check_order(char* s) {
int count_a = 0, count_b = 0;
for (int i = 0; s[i != '\0'; i++) {
if (s[i] == 'a') {
count_a++;
} else if (s[i] == 'b') {
count_b++;
if (count_a > count_b) {
return false;
}
}
}
return true;
}
int main() {
char s[] = "ababababa";
bool result = check_order(s);
printf("%s\n", result ? "true" : "false");
return 0;
}
```
相关问题
给你一个字符串s,他仅由字母a和b组成。每一次删除操作都可以从s中删除一个回文子序列。返回删除给定字符串中所有字符的最小删除次数。
首先,我们可以发现一个回文子序列中,只有两种字符出现,要么是aa,要么是bb。因此,我们可以先统计s中a和b的数量,然后分别考虑只删除a或只删除b的情况。
对于只删除a的情况,我们可以将s中所有的a删除,得到一个新的字符串s',然后判断s'是否为回文字符串,如果是,则说明只需要删除a即可,否则需要删除s'中所有的b,得到一个新的字符串s'',然后判断s''是否为回文字符串,如果是,则说明只需要删除a和b即可,否则说明无法通过只删除a来使得s成为回文字符串。
同理,对于只删除b的情况,我们也可以得到一个新的字符串s''',然后判断s'''是否为回文字符串,如果是,则说明只需要删除b即可,否则需要删除s'''中所有的a,得到一个新的字符串s'''',然后判断s''''是否为回文字符串,如果是,则说明只需要删除a和b即可,否则说明无法通过只删除b来使得s成为回文字符串。
综上所述,我们可以得到一个简单的算法:
1. 统计s中a和b的数量,分别记为na和nb
2. 如果na=0或nb=0,则说明s本身就是回文字符串,无需删除任何字符,直接返回0
3. 否则,分别考虑只删除a和只删除b的情况:
3.1 只删除a的情况:
3.1.1 将s中所有的a删除,得到一个新的字符串s'
3.1.2 如果s'是回文字符串,则返回na
3.1.3 否则,将s'中所有的b删除,得到一个新的字符串s''
3.1.4 如果s''是回文字符串,则返回na+nb,否则返回-1
3.2 只删除b的情况:
3.2.1 将s中所有的b删除,得到一个新的字符串s'''
3.2.2 如果s'''是回文字符串,则返回nb
3.2.3 否则,将s'''中所有的a删除,得到一个新的字符串s''''
3.2.4 如果s''''是回文字符串,则返回na+nb,否则返回-1
4. 如果以上两种情况都无法使得s成为回文字符串,则返回-1
代码如下:
现在给你一个仅由字符串a和b组成的字符串s作为输入。你需要写一个程序来实现字符串中每个a都出现在b之前如果满足要求就输出True,不满足就输出False,java代码实现
以下是 Java 代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(check(s) ? "True" : "False");
}
public static boolean check(String s) {
int last_b = -1; // 记录上一个 b 出现的位置
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'a') {
if (last_b >= i) {
return false;
}
} else {
last_b = i;
}
}
return true;
}
}
```
和 C++ 实现类似,遍历字符串,遇到 a 就判断上一个 b 是否出现在它之前,如果是就返回 false。如果遍历完了都没有返回 false,说明满足要求,返回 true。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)