gpt4 book ai didi

Java - 查找第二大数字

转载 作者:行者123 更新时间:2023-12-02 01:12:37 25 4
gpt4 key购买 nike

我需要:

编写一个函数,该函数接受字符串并以整数形式返回输入中第二高的数字。

应适用以下规则:

  • 没有数字的输入应返回 -1

  • 只有一位数字的输入应返回 -1

  • 应忽略非数字字符

  • 每个数字输入应单独处理,这意味着如果出现联合最高数字,则第二高数字将也是最高位

例如:

  • “abc:1231234”返回 3
  • “123123”返回 3

这是我目前的代码:

public class Solution {
public static int secondHighestDigit(String input) {

try{

int k = Integer.parseInt(input);

char[] array = input.toCharArray();

int big = Integer.MIN_VALUE;
int secondBig = Integer.MIN_VALUE;


for(int i = 0; i < array.length; i++){

System.out.println(array[i]);

for(int n = 0; n < array[i]; n++){
if(array[i] > big)
{
secondBig = big;
big = array[i];
}else if(array[i] > secondBig && array[i] != big){
secondBig = array[i];
}
}

}

System.out.println(secondBig);

}catch(Exception e) {
System.out.println("-1");
}
return -1;
}

}

测试:

import org.junit.*;
import static org.junit.Assert.*;

public class Tests
{

@Test
public void test1()
{
Solution solution = new Solution();

assertEquals(3, solution.secondHighestDigit("abc:1231234"));
}

@Test
public void test2()
{
Solution solution = new Solution();

assertEquals(3, solution.secondHighestDigit("123123"));
}
}

程序应该为 abc:1231234 和 123123 打印 3,但实际上两者都返回 -1。

我迷失了从这里该去哪里。如果有人可以提供帮助,我将不胜感激。谢谢。

最佳答案

一种可能的解决方案是删除所有非数字字符并对字符串进行排序

public int secondGreatest(String s) {
String newStr = s.replaceAll("[^0-9]*", "");
if (newStr.isEmpty() || newStr.length() == 1) {
return -1;
} else {
char[] c = newStr.toCharArray();
Arrays.sort(c);
return c[newStr.length() - 2] - '0';
}
}

关于Java - 查找第二大数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59140466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com