仅由大写字母和小写字母组成的衣服串,在不考虑大小写的情况下,有多少对相邻的字母相等?Java 代码
时间: 2023-05-21 22:05:23 浏览: 148
可以通过遍历字符串,依次比较其相邻字母是否相等来实现此问题的计算,示例 Java 代码如下:
```java
public static int countEquals(String s) {
int count = 0;
s = s.toLowerCase(); // 考虑大小写不敏感,将字符串转换为小写
for(int i=1; i<s.length(); i++) {
if(s.charAt(i) == s.charAt(i-1)) {
count++;
}
}
return count;
}
```
该函数接受一个字符串 s,返回其中仅由大写字母和小写字母组成的衣服串,在不考虑大小写的情况下,有多少对相邻的字母相等。函数使用一个计数器 count,遍历字符串 s,每次比较相邻字母是否相等,如果相等则将计数器加一,最后返回计数器的值。
使用示例:
```java
String s = "aAabBbcCdD";
int count = countEquals(s); // 返回 3,对应的相邻字母分别是 a/A, b/B, c/C
```
注意,该函数没有考虑输入字符串 s 为空或者 null 的情况,需要根据具体需求进行处理。
相关问题
汇编语言实现大小写不同的字母排序
以下是汇编语言实现大小写不同的字母排序的示例代码:
```assembly
section .data
arr db 'bAcDeFgHiJkLmNoPqRsTuVwXyZ', 0 ; 待排序的字符数组
section .bss
temp resb 1 ; 用于交换字符的临时变量
section .text
global _start
_start:
; 初始化寄存器
mov ecx, 19 ; 数组长度
mov esi, 0 ; 数组下标
mov ebx, 1 ; 是否有交换的标志
loop1:
; 比较相邻的两个字符,如果顺序不对则交换
mov edi, esi
inc edi
mov al, [arr + esi] ; 取出第一个字符
cmp al, [arr + edi] ; 将第一个字符和第二个字符进行比较
jbe continue1 ; 如果第一个字符比第二个字符小或相等,则继续比较下一对字符
; 否则交换两个字符
mov bl, [arr + edi]
mov [arr + esi], bl
mov [arr + edi], al
mov ebx, 0 ; 设置有交换的标志为0
continue1:
inc esi
cmp esi, ecx ; 判断是否已经遍历完整个数组
jb loop1
; 如果有交换,则需要再次遍历数组
cmp ebx, 0
jne loop1
; 输出排序后的字符数组
mov esi, 0 ; 重新定义数组下标
mov ecx, 19 ; 重新定义数组长度
print_loop:
movzx eax, byte [arr + esi] ; 取出一个字符
mov [temp], al ; 将字符存入临时变量
cmp al, 'a' ; 判断字符是否为小写字母
jb print_upper ; 如果字符不是小写字母,则直接输出
cmp al, 'z' ; 判断字符是否大于小写字母最大值
ja print_upper ; 如果字符大于小写字母最大值,则直接输出
sub al, 'a' - 'A' ; 将小写字母转换为大写字母
mov [temp], al ; 将字符存入临时变量
print_upper:
; 输出字符
mov eax, 4 ; 系统调用号
mov ebx, 1 ; 标准输出文件描述符
mov ecx, temp ; 存储要输出的字符串的地址
mov edx, 1 ; 要输出的字符数
int 0x80 ; 调用系统调用
inc esi
cmp esi, ecx ; 判断是否已经遍历完整个数组
jb print_loop
; 退出程序
mov eax, 1 ; 系统调用号
xor ebx, ebx ; 返回值为0
int 0x80 ; 调用系统调用
```
这段示例代码使用冒泡排序算法对大小写不同的字母进行排序,并将排序后的字符数组输出到标准输出中。在输出字符数组时,如果字符为小写字母,则将其转换为大写字母后输出。
阅读全文