小写字母置前

问题:

有一个由大小写组成的字符串,现在需要对它进行修改,将其中的所有小写字母排在大写字母的前面(大写或小写字母之间不要求保持原来次序)。

解决办法:

设置2个指针i和j,i最初指向字符串的第一个位置,j指向字符串的最后一个位置;

i向后遍历直到遇到第一个大写字符,j向前遍历直到遇到第一个小写字母,交换i和j位置上的字符;

直到i=j+1,结束;注意交换前需要判断i是否小于j,否则最后的两个字符不正确。

 

public String lowerBeforeUpper(String s){
		int len =s.length();
		int i=0;
		int j=len-1;
		while(i<j){
			while(i<len&&s.charAt(i)>='a'&&s.charAt(i)<='z'){   //xiaoxie
				i++;
			}
			while(j>=0&&s.charAt(j)>='A'&&s.charAt(j)<='Z'){
				j--;
			}
			if(i<j){
				s = switchIJ(s,i,j);	
			}
		}
		return s;
	}
	
	private String switchIJ(String s, int i, int j) {
		// TODO Auto-generated method stub
		StringBuffer a = new StringBuffer(s);
		char temp= a.charAt(i);
		a.setCharAt(i, a.charAt(j));
		a.setCharAt(j, temp);
		return a.toString();
	}

  

转载于:https://www.cnblogs.com/lxq0309/p/3719048.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值