天天看點

面試算法題1

版權聲明:本文為部落客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;

}

繼續閱讀