面試演算法題1

chszs發表於2007-03-08
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/1524679

面試演算法題1

在論壇看到有人提問,由於沒有儲存帖子路徑,到處找了一下,沒找到。乾脆就放到blog上。

/*
 * 有一個整數n,寫一個函式f(n),返回0到n之間出現的”1″的個數。
 * 比如f(13)=6,現在f(1)=1,問下一個最大的f(n)=n的n是什麼?
 * writed by chszs
 */
package myApp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Mymethod1 {
    private static String str=null;
    private static Integer n=0;
    private static int totalOne=0;
    public static void main(String[] args) throws IOException{
        System.out.println(“請輸入一個整數:”);
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        n=Integer.valueOf(br.readLine());
        for(Integer i=n;i>0;i–){
            totalOne=totalOne+Fn(i);
        }
        System.out.println(“函式f(n)從0到n之間出現的`1`的個數為:”+totalOne);
    }
    public static int Fn(Integer a){
        char[] re=a.toString().toCharArray();
        int le=re.length;
        int num=0;
        for(int i=0;i<le;i++){
            if(re[i]==`1`){
                num++;
            }
        }
        return num;
    }
}
 


相關文章