1.排序子序列
public static void main(String[] args) {
//得到从键盘上输入的数据 已知题意中n为整数
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//得到从键盘输入的数组
//长度给n +1 防止越界
int [] array = new int[n+1];
for (int i = 0; i < n; i++) {
array[i] = sc.nextInt();
}
//解题思路: count 记录排序子序列数量
//分为三种情况:大于(count++) 等于 小于(count ++)
int i = 0;
int count = 0;
while(i < n){
//非递减序列
if(array[i] < array[i+1]){
while (i <n && array[i] < array[i +1]) {
i ++;
}
count ++;
i++;
}else if (array[i] == array[i+1]){
i ++;
}else {
//非递增序列
while(i < n && array[i] > array[i+1]){
i++;
}
count ++;
i ++;
}
}
System.out.println(count);
}
2.倒置字符串
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
char[] ch = s.toCharArray();
int len = ch.length;
//1.整体进行逆置
reverse(ch,0,len -1);
//2.对单词进行逆置
int i = 0;
while(i < len){
//初始化j位置使j和i一样在单词开头
int j = i ;
//使j 走到单词最末尾 [i,j)- 》》就是一个逆置单词的区间
while(j < len && ch[j] != ' '){
j ++;
}
//对单词进行逆置操作
if(j <len){
reverse(ch,i ,j-1);
i= j +1;
}else {
//走到最后一个单词
reverse(ch,i ,j-1);
i = j;
}
}
String str = new String(ch);
System.out.println(str);
}
private static void reverse(char[] array, int start, int end) {
while(start <end ){
char tmp = array[start];
array[start] = array[end];
array[end] = tmp;
end--;
start++;
}
}