提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、字符串中找出连续最长数字串:
题目描述:
解题分析:
解题过程:
第一次提交代码:
import java.util.Scanner;
public class day3 {
//连续最长字符串:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
String cur="";
String ret="";
int i = 0;
for (; i <s.length() ; i++) {
char ch=s.charAt(i);
//判断是不是数字字符
if(ch>='0'&&ch<='9'){
cur+=ch+"";//任意类型加上""会变成字符串
}else{
if(cur.length()>ret.length()){
ret=cur;
cur="";
}else{
cur="";
}
}
}
System.out.println(ret);
}
}
错误分析:
解决方案:
如果是数字串结尾,需要在循环结束,判断cur长度是否大于ret长度即使更替:
第二次代码提交
import java.util.Scanner;
public class day3 {
//连续最长字符串:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
String cur="";
String ret="";
int i = 0;
for (; i <s.length() ; i++) {
char ch=s.charAt(i);
//判断是不是数字字符
if(ch>='0'&&ch<='9'){
cur+=ch+"";//任意类型加上""会变成字符串
}else{
if(cur.length()>ret.length()){
ret=cur;
}
cur="";
}
}
//当循环结束
if(i==s.length()&&cur.length()>ret.length()){
ret=cur;
}
System.out.println(ret);
}
}
总结题解:
二、数组中超过一半的数字
题目描述:
解题分析:
思路1:
解题过程:
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
//判断给定的数字是否合法
if (array == null || array.length == 0) {
return 0;
}
//排序并找到中间的数字
Arrays.sort(array);
int len = array.length;
int mid = array[len/2];
//检查:
int count = 0;
for (int i = 0; i < len ; i++) {
if (array[i] == mid) {
count++;
}
}
if (count > len/2) {
return mid;
}
return 0;
}
}
思路2:
分析
如果俩个数不相同,就消去这俩个数,最坏情况下,每次消去一个众数和一个非众数, 那么如果存在众数,最后留下的肯定是众数
解题过程
public int MoreThanHalfNum_Solution(int[] array) {
if (array == null || array.length == 0) {
return 0;
}
int result = array[0];
int times = 1;//次数
for (int i = 1; i < array.length; i++) {
if (times != 0) {
if (array[i] == result) {
times++;
} else {
times--;
}
} else {
result = array[i];
times = 1;
}
}
times = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == result) {
times++;
}
}
return (times > array.length / 2) ? result : 0;
}