java 只保留字母,Java 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。...

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

该题目来自力扣题库

示例

示例 1:

输入:“ab-cd”

输出:“dc-ba”

示例 2:

输入:“a-bC-dEf-ghIj”

输出:“j-Ih-gfE-dCba”

示例 3:

输入:“Test1ng-Leet=code-Q!”

输出:“Qedo1ct-eeLg=ntse-T!”

思路

先把输入的字符串转换成字符数组,之后运用双指针(一个指前left,一个指后right)。

if(left指的内容不是字母)则left++

else if(right所指的内容不是字母)则right–

else//这个就是left和right指的都是字母的情况

交换left和right所指的内容

最后把字符数组转换成字符串之后返回

代码

class Solution {

public String reverseOnlyLetters(String S) {

char[] s=S.toCharArray();

int left=0;

int right=s.length-1;

while(left<=right){

if(!Character.isLetter(s[left])){

left++;

}else if(!Character.isLetter(s[right])){

right--;

}else{

char temp='0';

temp=s[left];

s[left]=s[right];

s[right]=temp;

left++;

right--;

}

}

S=String.valueOf(s);

return S;

}

}

总结

Java中有很多好用的方法

1.把字符串转换成字符数组型

String S="abcdef"

char[] s=S.toCharArray();

2.判断字符是否是字母,数字

char c='a';

Character.isLetter(c);

//如果是字母返回true,如果不是字母返回false

Character.isDigit(c);

//如果是数字返回true,如果不是数字返回false

Character.isLowerCase(c);

//如果是小写字母返回true,如果不是小写字母返回false

Character.isUpperCase(c);

//如果是大写字母返回true,如果不是大写字母返回false

Character.isLetterOrDigit(c);

//如果是字母或者数字返回true,如果不是字母或者数字返回false

3.将字符数组转化成字符串

char[] s={'a','b','c','d'};

String S=String.valueOf(s);

//最后S字符串是"abcd"

4.charAt()方法

String s="abcd"

system.out.print(s.charAt(2));

//输出的是c

要注意的是charAt()方法返回的是字符串自定索引处的char值,charAt方法不是改变String的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值