字符串专题(二)—— 替换空格、旋转词、翻转单词、去掉连续出现k次的0

本文深入探讨了多种字符串操作方法,包括空格替换、旋转词判断、单词翻转及连续字符删除等,提供了具体实现代码,适合编程初学者和进阶者学习。

替换空格

问题:请编写一个方法,将字符串中的空格全部替换为“%20”.假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
给定一个string iniString为原始的串,以及串的长度 int len ,返回替换后的string.

public class Main{ 
    public static void main(String[] args) {
    	String A = "how are you";
    	System.out.println(A.replaceAll("\\s","%20"));  			
    }

旋转词

问题:如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A=“12345”,A的旋转词有"12345",“23451”,“34512”,“45123"和"51234”。对于两个字符串A和B,请判断A和B是否互为旋转词。

给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。

public class Main{ 
    public static void main(String[] args) {
    	String A = "12345";
    	String B = "23451";  
    	System.out.println(solve(A,B));  			
    }
        
    public static boolean solve(String A,String B){
        if(A.length() != B.length())  return  false;
    	
        StringBuilder sn = new StringBuilder();
        sn.append(1);
        sn.append(2);
        sn.append(3);
        sn.append(4);
        sn.append(5);
        
        for(int i=0;i<A.length();i++){
        	sn.append(sn.charAt(i));
        	if(B.equals(sn.substring(i+1,sn.length()).toString()))   return true;
        } 
		return false;
    } 
}

翻转单词

问题:把student a am I变成 I am a student;注意这和翻转字符串不同,翻转字符串是将 student a am I 翻转为 I ma a tneduts.
思路:将整个字符串翻转,然后再将每个单词翻转。

public class Main{ 
	//翻转功能
    public static String solve(String A){
    	StringBuilder sn = new StringBuilder(A);
    	String str = sn.reverse().toString();
    	
    	return str;
    }
    
    public static void main(String[] args) {
    	String A = "student a am I";
    	String str = solve(A);
    	String [] words = str.split("\\s"); //按照空格分割
    	StringBuilder sb = new StringBuilder();
    	for(int i =0;i<words.length;i++){
    		sb.append(solve(words[i])+' ');
    	}	
    	sb.deleteCharAt(sb.length()-1);
    	System.out.println(sb);
    }
}

去掉连续出现k次的0

问题:给定一个字符串,去掉字符串中连续出现k次的0;例如:100001 K=3;得到101。

public class Main{ 
    public static void main(String[] args) {
    	String A = "110000";
    	int k = 3;
    	System.out.println(solve(A,k));  			
    }
        
    public static String solve(String A,int k){
    	int flag=0;
        for(int i=0;i<A.length();i++){
        	if(A.charAt(i) == '0'){
        		flag = i;
        		break;
        	}
        }
        
        String s = A.substring(0,flag) + A.substring(flag+k);
		return s;
    } 
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值