java第九次作业



1.信息熵(Entropy)

public class Main {
	public static void main(String[] args) {
		String str =  StdIn.readAll();
		//大写转小写
		str = str.toLowerCase();
		int sum = 0;
		double e = 0.0d;
		int [] arr = new int[26];
		for (int i = 0; i < str.length(); i++) {
			char ch = str.charAt(i);
			if (ch >= 'a' && ch <= 'z') {
				arr[ch-'a']++;				
				sum ++;
			}
		}
		for (int i = 0; i < arr.length; i++) {
			double d = 1.0*arr[i] / sum;
			if (d > 0) {
				e += -(d*Math.log(d)/Math.log(2));
			}
		}
		StdOut.printf("%4.2f\n",e);
	}
}

2.正龙拍虎与数码相片

import java.io.BufferedInputStream;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifDirectory;
public class Main {
	public static void main(String[] args) {
		try {
			Metadata metadata = JpegMetadataReader.readMetadata(new BufferedInputStream(System.in));
			Directory exif = metadata.getDirectory(ExifDirectory.class);
			String cameraMake = exif.getString(ExifDirectory.TAG_MAKE);
			String cameraModel = exif.getString(ExifDirectory.TAG_MODEL);
			String tagFocalLength = exif.getString(ExifDirectory.TAG_FOCAL_LENGTH);
			String tagFnumber = exif.getString(ExifDirectory.TAG_FNUMBER);
			String tagDatetimeOriginal = exif.getString(ExifDirectory.TAG_DATETIME_ORIGINAL);
			System.out.println(cameraMake);
			System.out.println(cameraModel);
			System.out.println(tagFocalLength);
			System.out.println(tagFnumber);
			System.out.println(tagDatetimeOriginal);
		} catch (JpegProcessingException e) {
			e.printStackTrace();
		}
	}
}

3.编辑距离
public class Main {
	public static void main(String[] args) {
		String s1 = StdIn.readLine();
		String s2 = StdIn.readLine();
		int result = -1;
		int s1Len = s1.length();
		int s2Len = s2.length();
		int[][] arrayOfInt = new int[s1Len + 1][s2Len + 1];
		if (s1.equals(s2)) {
			result = 0;
		}else if(s1Len == 0 ){
			result = s2Len;
		}else if(s2Len == 0 ){
			result = s1Len;
		}else{
			for (int i = 0; i <= s1Len; i++) {
				arrayOfInt [i][0] = i;
			}
			for (int j = 0; j <= s2Len; j++) {
				arrayOfInt [0][j] = j;
			}
			for (int i = 1; i <= s1Len; i++) {
				for (int j = 1; j <= s2Len; j++) {
					if(s1.charAt(i-1) == s2.charAt(j - 1)){
						arrayOfInt[i][j] = arrayOfInt[i-1][j-1];
					}else{
						int min = arrayOfInt[i-1][j]+1;
						if (arrayOfInt[i][j-1]+1 < min ) {
							min = arrayOfInt[i][j-1]+1;
						}
						if(arrayOfInt[i-1][j-1]+1 < min){
							min = arrayOfInt[i-1][j-1]+1;
						}
						arrayOfInt[i][j] = min;
					}
				}
			}
			result = arrayOfInt[s1Len][s2Len];
			System.out.println(result);
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值