左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。
请定义一个函数实现字符串左旋转操作的功能。比如输入字符串“abcdefg”和

数字 2.该函数左旋转 2 位得到的结果“cdefgab"

方法一:

import java.util.*;
public class StringLeftRotate_1 {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String str = sc.nextLine();//nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符
			int a =sc.nextInt();
			String str1=leftRorate(str,a);
			System.out.println(str1);
			
		}		
		sc.close();
		
		
	}
	public static String leftRotate(String str,int num){
		if(str==null || str.length()==0)
			return null;
		StringBuilder sb =new StringBuilder();
		if(str==null||str.length()==0||num<0)
			return null;
		String str1=str.substring(num,str.length());
			sb.append(str1);
		String str2=str.substring(0,num);
			sb.append(str2);
		String str3=new String(sb);
			return str3;
			
	}
}

方法二:

import java.util.*;
public class StringLeftRotate_2 {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String str = sc.nextLine();//nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符
			int a =sc.nextInt();
			String str1=leftRorate(str,a);
			System.out.println(str1);
			
		}		
		
		sc.close();
	}
	
	
	public static String leftRotate(String str,int num){
		if(str==null || str.length()==0)
			return null;
		//定义一个字符容器,用来装新的字符
		char [] ch=new char[str.length()];
		char [] ch1=str.toCharArray();
		int m=0;
		for(int i=num;i<str.length();i++){
			ch[m]=ch1[i];
			m++;
		}
		for(int j=0;j<num;j++){
			ch[m]=ch1[j];
			m++;
		}
	
		String str1=new String(ch);
		return str1;
	
	}
}

方法三:

import java.util.Scanner;
public class StringLeftRotate_3 {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String str = sc.nextLine();//nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符
			int a =sc.nextInt();
			String str1=leftRorate(str,a);
			System.out.println(str1);
			
		}		
		
		sc.close();
	}
	
	
	public static String leftRotate(String str,int num){
		if(str==null || str.length()==0)
			return null;
		//定义一个字符容器,用来装新的字符
		char [] ch=new char[str.length()];
		int m=0;
		for(int i=num;i<str.length();i++){
			ch[m]=str.charAt(i);
			m++;
		}
		for(int j=0;j<num;j++){
			ch[m]=str.charAt(j);
			m++;
		}
	
		String str1=new String(ch);
		//String str1=String.valueOf(ch);
		return str1;
	
	}
}

方法四:

import java.util.Scanner;

public class StringLeftRotate_4 {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String str = sc.nextLine();//nextLine()的输入是碰到回车就终止输入,而next()方法是碰到空格,回车,Tab键都会被视为终止符
			int a =sc.nextInt();
			
			new StringLeftRotate_4().leftRotate(str,a);
	
			
		}		
		
		sc.close();
	}
	public static void leftRotate(String sentence,int index){
		if(sentence==null||index>sentence.length()||index<0){
			return ;
		}
		String[] splitString={sentence.substring(0,index),
				sentence.substring(index,sentence.length())};
		StringBuffer resultbBuffer=new StringBuffer();
		for(String s:splitString){
			resultbBuffer.append(reverse(s));
		}
		System.out.println(reverse(resultbBuffer.toString()));
		
	}
		public static String reverse(String str) {
			char[] array=str.toCharArray();
			for(int i=0;i<(array.length+1)/2;i++)
			{
				char temp=array[i];
				array[i]=array[array.length-1-i];
				array[array.length-1-i]=temp;
			}
			return String.valueOf(array);
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值