1. 程式人生 > >牛客題解day02

牛客題解day02

請設計一個高效的方法,找出任意指定單詞在一篇文章中的出現頻數。

給定一個string陣列article和陣列大小n及一個待統計單詞word,請返回該單詞在文章中的出現頻數。保證文章的詞數小於等於1000。

import java.util.*;

public class Frequency {
    public int getFrequency(String[] article, int n, String word) {
        // write code here
        ArrayList<String>   arrayList=new ArrayList<String>();
		for(int i=0;i<article.length;i++) {
			arrayList.add(article[i]);
		}
		int count=0;
		for(int i=0;i<arrayList.size();i++) {
			if(word.hashCode()==arrayList.get(i).hashCode()) {
				count++;
			}
			
		}
		return count;
       
    }
}

小易有一個圓心在座標原點的圓,小易知道圓的半徑的平方。小易認為在圓上的點而且橫縱座標都是整數的點是優雅的,小易現在想尋找一個演算法計算出優雅的點的個數,請你來幫幫他。
例如:半徑的平方如果為25
優雅的點就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12個點。

輸入描述:

輸入為一個整數,即為圓半徑的平方,範圍在32位int範圍內。

輸出描述:

輸出為一個整數,即為優雅的點的個數
import java.util.Scanner;


public class Main{
   public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			int s=sc.nextInt();
			System.out.println(countNum(s));
		}
	}
 
	private static int countNum(int s) {
	//勾股定理
		int count=0;
		int r=(int)Math.sqrt(s);
		//x軸從1開始,避免重複,只求一個象限的
		for(int i=1;i<=r;i++){
			int m=s-i*i;
			int y=(int)Math.sqrt(m);
			if(y*y==m){
				count++;
			}
		}
		return 4*count;
	}

}