价格划算的做网站seo推广一个月见效
需求:
一个字符串以空格为单词间分隔符,给定单词的起始位置,依次输出所有单词,注意是环形输出。
例如:
字符串:“i love software testing”
单词数:4
单词起始位置:0
如果给定起始位置是0,则输出:
i love software testing
如果给定起始位置是1,则输出:
love software testing i
以此类推。。。
思路:
给定字符串,要分离出单词位置,对于单词环形输出,有2种方案。
- 以给定的序号开始,先输出剩余字符串,再输出序号之前的字符串,这是常规思路。
- 考虑环形特性,序号除单词个数取余数,如果余数再次等于给定的序号数,则便是第二次遍历开始。
例如:
给定字符串:i love software war
则单词序号:i[0] love[1] software[2] war[3]
给定起始序号:2
则:2%4=2,输出 software,序号+1
3%4=3,输出 war, 序号+1
4%4=0, 输出 i, 序号+1
5%4=1,输出love, 序号+1
6%2=2,跟给定的初始序号重复,则结束。
实现:
常规实现:
public static void printWordsInCircularOrder1(String str, int index) {String[] strArray = str.trim().split(" ");if (index >= 0 && index < strArray.length) {for (int i = index; i < strArray.length; i++) {System.out.print(strArray[i] + " ");}for (int j = 0; j < index; j++) {System.out.print(strArray[j] + " ");}System.out.println();} else {System.out.println("invalid index");}}
环形特性实现:
public static void printWordsInCircularOrder2(String str, int index) {String[] strArray = str.split(" ");int tempIndex = index;if (index >= 0 && index < strArray.length) {do {System.out.print(strArray[tempIndex % strArray.length] + " ");tempIndex++;} while (tempIndex % strArray.length != index);System.out.println();} else {System.out.println("Invalid index");}
}
全部代码:
import java.util.Scanner;public class Test {public static void main(String[] args) {testPrintWordInCircularOrder();}public static void testPrintWordInCircularOrder() {System.out.println("Enter a string: ");Scanner in = new Scanner(System.in);String str = in.nextLine();System.out.println("Enter an index number, -1 means to quit");int index = in.nextInt();while (index != -1) {printWordsInCircularOrder2(str, index);System.out.println("Enter an index number, -1 means to quit");index = in.nextInt();}}public static void printWordsInCircularOrder1(String str, int index) {String[] strArray = str.trim().split(" ");if (index >= 0 && index < strArray.length) {for (int i = index; i < strArray.length; i++) {System.out.print(strArray[i] + " ");}for (int j = 0; j < index; j++) {System.out.print(strArray[j] + " ");}System.out.println();} else {System.out.println("invalid index");}}public static void printWordsInCircularOrder2(String str, int index) {String[] strArray = str.split(" ");int tempIndex = index;if (index >= 0 && index < strArray.length) {do {System.out.print(strArray[tempIndex % strArray.length] + " ");tempIndex++;} while (tempIndex % strArray.length != index);System.out.println();} else {System.out.println("Invalid index");}}
}
结果:
Enter a string:
I Love Software Testing
Enter an index number, -1 means to quit
0
I Love Software Testing
Enter an index number, -1 means to quit
1
Love Software Testing I
Enter an index number, -1 means to quit
2
Software Testing I Love
Enter an index number, -1 means to quit
3
Testing I Love Software
Enter an index number, -1 means to quit
4
Invalid index
Enter an index number, -1 means to quit
-1Process finished with exit code 0