1、求n个整数的最大公约数,输入个数n,接着输入n个整数
例如: 输入:5 10 15 20
输出:5
<pre name="code" class="java">import java.util.Scanner;
public class GY {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] ints = new int[n];
for(int i = 0;i<n ;i++){
ints[i] = sc.nextInt();
}
System.out.println(maxGY(ints));
}
private static int maxGY(int[] ints) {
int max = 0;
max = ints[0];
for(int i=0;i<ints.length;i++){
if(gongyue(max,ints[i]) < max){
max= gongyue(max,ints[i]);
}
}
return max;
}
public static int gongyue(int m,int n){
if(m%n==0)
return n;
else
return gongyue(n,m%n);
}
}
2、数字消除,给你一个15个数字,消除连续3或者3个以上的数字例如:输入:1 1 1 2 3 4 4 4 3 3 6 7 8 9 9 输出:2 6 7 8 9 9
import java.util.Scanner;
public class XiaoChu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a = new int[15];
for(int i=0;i<15;i++){
a[i] = sc.nextInt();
}
int[] b = xiaochu(a);
for(int i=0;i<b.length;i++){
System.out.print(b[i]+" ");
}
}
public static int[] xiaochu(int[] a){
//定义指针和计数器
int tmp = a[0];
int count = 0;
//按与数组a的对应位置,标记为true
boolean[] flags = new boolean[a.length];
for(int i = 0; i< flags.length;i++){
flags[i] = true;
}
//是否要继续递归调用该函数,如果本次调用中,又出现了连续的,则需要递归调用
boolean jixu = false;
//遍历数组,将连续3个或者3个以上的字符的位置标为false
for(int i=0; i<a.length; i++){
if(tmp==a[i]){
count++;
//判断是否为最后一个字符
if(i==a.length-1){
if(count>=3){
for(int j=i;j>=i-count;j--){
flags[j] = false;
}
jixu = true;
}
}
}else{
if(count>=3){
for(int j=i-1;j>=i-count;j--){
flags[j] = false;
}
jixu = true;
}
tmp = a[i];
count = 1;
}
}
//看看有多少个幸免于难
int youxiao = 0;
for(int i=0;i<flags.length;i++ ){
if(flags[i])
youxiao++;
}
//复制到新数组
int j = 0;
int[] b = new int[youxiao];
for(int i=0; i<a.length; i++ ){
//把存活的数字复制到新数组
if(flags[i]){
b[j++] = a[i];
}
}
//要不要继续消除啊?
if(jixu){
return xiaochu(b);
}
return b;
}
}
3、大概是找出一段文本中出现次数最多的单词和次最多的单词,用‘,’号分开表示
例如:输入:Hello world,hello world ,I am a boy in the world.
输出:world,hello
其他的要求忘了,我实现的部分代码,只保证对唯一性的有效。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TongJi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String result = find(s);
System.out.println(result);
}
private static String find(String s) {
//将字符串都变为小写,并将所有的','和'.'换成' '
String ss = s.toLowerCase().replace(',', ' ').replace('.', ' ');
//分隔字符串,得到单词的数组
String[] strings = ss.split(" ");
//定义一个HashMap并将其键初始为数组中的单词,将其值初始化为0
Map<String,Integer> map = new HashMap<String,Integer>();
for(String se:strings){
map.put(se, 0);
}
//循环遍历单词数组,并将对应的map的值加1
for(int i = 0; i < strings.length; i++){
int value = map.get(strings[i]);
map.put(strings[i], value+1);
}
//遍历map
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
int max = 0;
String maxString = "";//次数最多的单词
while(it.hasNext()){
String key = it.next();
int value = map.get(key);
if(value > max){
max = value;
maxString = key;
}
}
//将次数最大的个数设为0
map.put(maxString, 0);
//知道次最多的那个单词
String premaxString = "";
it = set.iterator();
max = 0;
while(it.hasNext()){
String key = it.next();
int value = map.get(key);
if(value > max){
max = value;
premaxString = key;
}
}
return maxString+","+premaxString;
}
}