【数据结构】字符串

leetcode

Reverse String (反转字符串) https://leetcode-cn.com/problems/reverse-string/ 

package codingTest4;

public class reverseString {
	/*
	 * 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
               不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
               你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
	 * 
	 * */
	
	//方法1:原地修改输入数组、使用 O(1) 的额外空间
	public static void reverseString(char[] chs) {
        int start = 0;
        int end = chs.length - 1;
        
        while(start < end) {
        	char temp = chs[start];
        	chs[start] = chs[end];
        	chs[end] = temp;
        	start ++;
        	end --;
        }
    }
	
	//方法2:调用StringBuffer中的reverse方法
	public static String reverseString2(String str) {
		return new StringBuffer(str).reverse().toString();
	}
		
	//方法3:准备一个字符串,将各个字符串进行倒序拼接
	public static String reverseString3(char[] chs) {
		String str = "";
		for(int i = chs.length-1; i >= 0; i-- ) {
			str += chs[i];
		}
		return str;
	}
	
	public static void main(String[] args) {
		System.out.println("---------------------------------");
		char[] chs1 = {'a','c','v'};
		reverseString(chs1);
		for(char ch : chs1) {
			System.out.print(ch);
		}
		System.out.println("---------------------------------");
		String str2 = "127855";
		System.out.println(reverseString2(str2));
		System.out.println("---------------------------------");
		char[] chs3 = {'a','c','v'};
		String str = reverseString3(chs3);
		System.out.println(str);
		System.out.println("---------------------------------");
	}
}

Reverse Words in a String(翻转字符串里的单词) https://leetcode-cn.com/problems/reverse-words-in-a-string/ 

package codingTest4;
/**
 * 
 * 给定一个字符串,逐个翻转字符串中的每个单词。
 * 思想:
 * 先翻转整个句子; 
 * 然后,依据空格来确定单词的起始和终止位置,依次翻转每个单词。
 * */


public class ReverseWordsInString {
	public static String reverseWords(String s) {
		char[] chs = s.toCharArray();
		reverse(chs, 0, chs.length-1);
		int blank = -1;//用一个全局变量维持上一个空格的位置
		for(int i = 0; i < chs.length; i++) {
			if(chs[i] == ' ') {
				int nextBlank = i;
				reverse(chs, blank+1, nextBlank-1);
				blank = nextBlank;
			}
		}
		reverse(chs, blank+1, chs.length-1);
		return new String(chs);
    }
	
	
	public static void reverse(char[] chs, int start, int end) {
		while(start < end) {
			char temp = chs[start];
			chs[start] = chs[end];
			chs[end] = temp;
			start ++;
			end --;
		}
	}
	
	public static void main(String[] args) {
		String str = "hi volcano";
		System.out.println(reverseWords(str));
	}
}

String to Integer (atoi)(字符串转换整数 (atoi)) https://leetcode-cn.com/problems/string-to-integer-atoi/ 

这个还没搞明白

猜你喜欢

转载自blog.csdn.net/volcano1995/article/details/88355084