题目描述
输入一个整数n,然后输入n个字符串,将这n个字符串保存在数组中。寻找上述字符串中长度最长并且以b开头的字符串,在一个独立行中输出这个字符串在数组中的下标、字符串本身的值,中间用空格分开。如果有多个满足要求的元素,只需输出其中下标最小的那个元素的相关内容。如果没有以b开头的字符串,则输出-1。
输入样例
5
wonderful beauty peace bit am
输出样例
1 beauty
下面这个是我以前学的寻找数组元素中按字典顺序比较最小的字符串的代码,希望能在这个基础上进行修改
```java
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
int min_index = 0;
Scanner n_scanner = new Scanner(System.in);
int n = n_scanner.nextInt();
Scanner str_scanner = new Scanner(System.in);
String[] str_arr = new String[n];
for(int i = 0; i < n; i++) {
str_arr[i] = str_scanner.next();
}
for (int i = 0; i < str_arr.length - 1; i++) {
if(str_arr[0].compareTo(str_arr[i + 1]) >= 0){
str_arr[0] = str_arr[i + 1];
min_index = i + 1;
}
}
System.out.println(min_index + " " + str_arr[0]);
}
}
```
public class Main {
public static void main(String[] args) {
Main main = new Main();
int min_index = -1;//初始值-1
Scanner n_scanner = new Scanner(System.in);
int n = n_scanner.nextInt();
Scanner str_scanner = new Scanner(System.in);
String[] str_arr = new String[n];
for(int i = 0; i < n; i++) {
str_arr[i] = str_scanner.next();
}
//本题要求1.b头 2.最长
for (int i = 0; i < str_arr.length; i++) {
//这里反了,要最长,且b开头,等价于:
// 1.b开头是必要的
// 2.之前没找到或者比之前更长两个条件要满足一个
// 3.写错了,长度比较不是字典序
if((min_index == -1 || str_arr[min_index].length()<str_arr[i].length() ) && (str_arr[i].startsWith("b"))){
//这句不要,更改了原数据不利于后续查bug,也更容易出错
// str_arr[0] = str_arr[i + 1];
min_index = i;
}
}
//改成min_index
if(min_index == -1){
System.out.println(min_index);
}else
System.out.println(min_index + " " + str_arr[min_index]);
}
}