2016.4.1【i码邦】每日一练

编程实现:给定一个长字符串“djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov”,找出出现次数最多的字符
 
tu0401.png

 
今天每日一练,大家用【i码邦】app贴出答案和截图,可以额外获得100积分奖励!!!
共同纪念我们的[size=16]“哥哥”张国荣!![/size]
 
不限形式,不限格局,百花齐放才是编程的春天!!
 


点滴成就未来,现在开始在【i码邦】为未来累积高度!
 
 

--来自网页客户端
已邀请:

l123456

赞同来自: admin 镜痕C2E3B00B

image.png


--来自移动客户端

Nicholas - 90后IT男

赞同来自: admin rewq it路上有我有你

public class MaxReStr {
    public String findStr(String s){
        if(s==null){
            return null;
        }
        //最长重复子串的长度
        int max=0;
        //最长重复子串的第一个字符在s中的下标
        int first=0;
        String res = null;
        //i为每次循环设定的字符串比较间隔:1,2,...,s.length()-1
        for(int i=1;i<s.length();i++){
            for(int k=0,j=0;j<s.length()-i;j++){
                if(s.charAt(j)==s.charAt(j+i))
                    k++;
                else
                    k=0;
                if(k>max){
                    max=k;
                    first=j-max+1;
                }
            }
            if(max>0){
                res = s.substring(first, first+max);
            }
        }
        return res;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s = "djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov";
        System.out.println(new MaxReStr().findStr(s));
    }
}

--来自网页客户端

libertyzheng

赞同来自: rewq

QQ截图20160401151507.png


 

--来自网页客户端

a513470086 - G i码邦(爱码邦) --没理由!

赞同来自:

import java.util.Arrays;
import java.util.HashMap;
public class Test003 {
    /*编程实现:给定一个长字符串“djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov”,
    找出出现次数最多的字符 */
    public static void main(String[] args) {
        //HashMap 做法
        String inputstr = "djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov";//给定字符串
        char[] array_input = inputstr.toCharArray();//将字符串转化为字符数组
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();//创建一个map<字符,个数>
        for(int i = 0; i < array_input.length; i++){
            Character row = array_input[i];
            if (map.containsKey(row)) {//如果包含该字符
                Integer count = map.get(array_input[i]) + 1;//个数等于原有个数加一
                map.remove(row);//移除这个字符
                map.put(row, count);//加入字符
            } else {//不包含该字符
                map.put(row, 1);//加入该字符,并将个数赋为一
            }
        }
        //排序
        System.out.println(map);//打印结果
        char[] vec = {'d','j','f','a','o','s','d','f','x','o','m','o','s','f','o','e','u','t','o','k','f','j','a','s','d','j','f','g','o','i','r','t','o','s','d','k','f','s','j','v','o','i','s','j','f','i','o','s','o','j','t','e','f','n','o','x','z','m','o','v'};
        Arrays.sort(vec);
        System.out.println("\n");
        System.out.println("降序排列:");
        for (int i=vec.length-1;i>=0 ;i-- ){
            System.out.print(vec[i]+" "); 
        }
    }
}
 
====================================================================
 
 

--来自网页客户端

tuogoudeyu - 此人很懒

赞同来自: 刘磊 韬哥很低调

package imaDay0401;

public class CountChar {
public String str;
public char[] chs ;
public CountChar(String str){
this.str=str;
}
public void CheckCharNum(){
/*定义一个开关,范围为67~122,长度为123*/
boolean[] index =new boolean[123];
/*定义一个开关,计算当前字符出现次数*/
int [] charNum = new int[123];
/*定义char数组,存储拆分字符串对应的字符*/
chs = new char[str.length()];
/*
* 定义最大次数,对应最大次数出现的字符所对应的int值
* 并初始化
*/
int max=0,maxindex=-1;
for(int i=0;i<str.length();i++){
chs[i]= str.charAt(i); //将字符串拆分为单个字符数组
charNum[chs[i]]++; //以开关的方式记录当前字符出现的次数
index[chs[i]]=true; //以开关的方式记录当前字符已出现
}
for (int i =67;i<123;i++){
/*
*因字母在unicode中以67开始,122结束
*则i代表的是字符对应的code值
*/
if (index[i]){
//判断字符是否出现,出现则执行
System.out.println((char)i+"一共:"+charNum[i]+", ");

if(max<charNum[i]){//若当前值大于max值,则将当前值赋给max
max =charNum[i];
maxindex = i;//获取最大值对应数组的下标
}
}
}
System.out.println("出现最多的字母是:"+(char)maxindex);

}


public static void main(String[] args){
CountChar str=new CountChar("djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov");
str.CheckCharNum();


}
}





image.png


--来自移动客户端

lanlan2501 - 上善若水任方圆

赞同来自:

/*要统计长字符串中出现最多的字符*/
//定义一个字符串指针指向长字符
//定义一个字符数组x[i]指向对应的一个字符,对应的int数组y[i]如果下一个不同i++,如果指向的下一个字符
//以前出现过,那么对就的y里的值+1;最后用法找出y数组中值对大的那个i,并且打印出相应的xi

public class Count{
    public static void main(String[] args){
        String inputstr = "djfaosdfxomosfoeutokfjasdjfgoirtosdkfsjvoisjfiosojtefnoxzmov";
        int n = inputstr.length();
        char[] ori =inputstr.toCharArray();
        
    
        char[] each = new char[n];        
        int[] count = new int[n];
        int k = 0;    
        //System.out.println("ori[0]= n="+ori[0]+n);
        each[k] = ori[0];
        count[k] = 1;
        
        for(int i= 1; i<n; i++){
            boolean l = false; 
            
            if(k<i){
                for (int j =0; j<= k; j++){
                
                
                    if(each[j] == ori[i]){
                        
                        ++count[j];
                        System.out.println("count["+j+"]="+count[j]+"\t\teach["+j+"]="+each[j]);
                        l = true;
                        break;
                    }
                        
                    
                }
                if(!l){
                    k++;
                    each[k] = ori[i];
                    count[k] = 1;
                    System.out.println("k="+k+"\t\tori["+i+"] ="+ori[i]+"\t\teach["+k+"]="+each[k]);    
                }        

            }    

        }
        // 
        
        count[++k] = '\0';
        int mst = max(count);
        System.out.println("字符串最多的是"+each[mst]+"有"+count[mst]+"个");
        
        
    }
    public static int max(int[] a){
        int m = a[0];
        int n =0;
        for(int i=1; a[i] != '\0'; i++){
            System.out.println("a["+i+"]="+a[i]+"\t\n");
            if(a[i] > m){
                m = a[i];
                n = i;
            }
            
            
        }
        //System.out.println("n="+n);
        return n;
            
        
    }
    
    
    
}

--来自网页客户端

fengyun12

赞同来自: 梁同学8A4DB shao

/**
* 每日一练 20160401
* 给定一个长直发串,找出出现次数最多的字符
*/
public void ex160401(){
String str; //定义一个字符串
String ls;
int cs=0; //定义出现最多的次数
String zf="";
InputStreamReader isr=new InputStreamReader(System.in); //定义一个标准输入流
BufferedReader br=new BufferedReader(isr); //定义为缓冲模式

try{
System.out.println("请输入一串字符:");
str=br.readLine(); //读入一行数据
int len1=str.length();
int len2;
while(len1>0){
ls=str.substring(0,1);
str=str.replace(ls, "");
len2=str.length();
if(len1-len2>cs){
cs=len1-len2;
zf=ls;
}
len1=len2;
}
System.out.println("次数最多的字符是"+zf+" 一共出现"+cs);

}
catch(IOException ex){
ex.printStackTrace();
}



}

--来自移动客户端

Hi23EC777D715E -

赞同来自:



--来自移动客户端

wangrui1991

赞同来自: 雪9E98DC7C1E3

image.png


public class MyLesson5 {
public static void main(String[] args) {
String a="qweerytuiooupqqq";
int b,flag=0,c,count=0,max=0;
int save[]=new int[a.length()];
char zimu=0;
char arrayli[]=a.toCharArray();
for(int i=0;i<a.length();i++)
{
b = arrayli[i];
save[i]= (int)b;
for(int j=0;j<i;j++){
if( b == save[j] )
{ flag=1;break; }
else flag=0;
}
if(flag == 0){
for(int k=0;k<a.length();k++)
{
c = arrayli[k];
if(c == b)
{count++;}
}

System.out.println("a["+arrayli[i]+"]:"+count);

if( count>max)
{ max=count;
zimu=arrayli[i];}
}

count = 0;


}
System.out.println("a["+zimu+"]="+max);

System.out.println("hello world");
}
}

--来自移动客户端

我叫小灯

赞同来自:

赚取一点积分

--来自移动客户端

yft508

赞同来自:

CountMax.jpg

 

--来自网页客户端

了知280D8683

赞同来自:

o

--来自移动客户端

Zfuzfuzgi - import java.util.Scanner

赞同来自:

只为一点积分

--来自移动客户端
public class test1 {

public static void main(String[] args) {
String str1="aaaadddddcccccgggg";
System.out.println("固定长字符为:"+str1);
char[]a=str1.toCharArray(); //把长字符转换为字符组
int[]b=new int[a.length-1]; //把计算的结果作为数组
int max=0;
int temp=0;
int count1=0;
for(int i=0;i<a.length;i++){
int count=1;
for(int j=i+1;j<a.length;j++){
if(a[i]==a[j]){
count+=1;
}
b[i]=count;
}
}
for(int k=0;k<b.length;k++){
if(max<=b[k]){
max=b[k];
temp=k;
}
}
for(int l=0;l<b.length;l++){
if(max==b[l]){
System.out.println("出现最多次数的字符为:"+a[l]);
}
}
System.out.println("出现次数为:"+max);
StringBuffer str2=new StringBuffer(str1);
System.out.println("逆向输出为:"+str2.reverse().toString());
}
}

--来自移动客户端

elise

赞同来自:

o

--来自移动客户端

Zfuzfuzgi - import java.util.Scanner

赞同来自:

O

--来自移动客户端

Adun

赞同来自:

Me too

--来自移动客户端

flying鲲鹏DB

赞同来自:

小白来看看

--来自移动客户端

静茹水

赞同来自:

积分好赚?

--来自移动客户端

luoluo - 暂无签名

赞同来自:

IMG018-1.jpg


--来自移动客户端

颍哥

赞同来自:

只为积分

--来自移动客户端

Aliez

赞同来自:

不会哦

--来自移动客户端

tianmenghuan - 还好吧

赞同来自:

好难


--来自移动客户端

tellme

赞同来自: JasonM

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class str {

/**
* @param args
*/
public static void main(String[] args) {

try {

while (true) {
char cc;
char zc = ' ';
int tmp = 0;
int zdzf = 0;
String zstr = "";

BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入一个字符串:");
String str = strin.readLine();
if (str.charAt(0) == '#') {
break;
}

for (int j = 0; j < str.length(); j++) {
cc = str.charAt(j);

tmp = 0;
for (int i = 0; i < str.length(); i++) {
if (cc == str.charAt(i)) {

tmp++;
}

}
if (tmp > zdzf) {
zdzf = tmp;
zc = cc;
zstr = String.valueOf(cc);
} else {
if (tmp == zdzf) {
if (zstr.indexOf(cc) < 0) {
zstr = zstr + String.valueOf(cc);
}
}

}

}

System.out.println("本字符串出现最多的字符为:" + zstr);

}
System.out.println("END");
} catch (IOException e) {
e.printStackTrace();
}

}

--来自移动客户端

兰博

赞同来自:

F

--来自移动客户端

兰博

赞同来自:

O

--来自移动客户端

杰锅锅

赞同来自:

小白。。只为混积分。。

--来自移动客户端

super大

赞同来自:

输入字符串:aaaaabbeee1222198934&^$sakdj&^$
{d=1, e=3, b=2, &=2, $=2, a=6, j=1, k=1, 3=1, 2=3, 1=2, s=1, 4=1, 9=2, ^=2, 8=1}
出现最多的字符:a,次数为:6
------上面为测试结果,下面为源码,希望对大家有用--------

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.Map.Entry;

public class FindChar {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("输入字符串:");
String str = scan.nextLine();
char[] c = new char[str.length()];
Set<Character> set = new HashSet<Character>();
for(int i=0;i<str.length();i++){
char e = str.charAt(i);
c[i]=e;//将所有字符保存到一个字符数组
set.add(e);//将所有字符保存到set集合并去重
}
Map<Character, Integer> NumMap = Check(c, set);
System.out.println(NumMap);
String str2 = GetTheMax(NumMap);
System.out.println(str2);
scan.close();
}
/**
* 处理字符串,统计各自出现的次数
* @param c
* @param set
* @return
*/
public static Map<Character, Integer> Check(char[] c,Set<Character> set){
Map<Character, Integer> map = new HashMap<Character, Integer>();
int temp=0;//每个字符出现的次数
for(Character s:set){//将出现的字符都作为key保存到一个map
map.put(s, temp);
}
for(char e:c){//遍历字符数组
if(map.containsKey(e)){//如果map中包含这个字符(key),则其value值加1
int value = map.get(e);
value++;//字符出现一次,则对应value加1
map.put(e, value);
}
}
return map;
}
/**
* 找出出现次数最多,并打印
* @param map
* @return
*/
public static String GetTheMax(Map<Character, Integer> map){
Set<Entry<Character, Integer>> entry = map.entrySet();
int max = 0;
Character c = null;
for(Entry<Character, Integer> e:entry){
if(e.getValue()>max){
max=e.getValue();
c=e.getKey();
}
}
return "出现最多的字符:"+c+","+"次数为:"+max;
}
}

--来自移动客户端

要回复问题请先登录注册

Template error, template file not found