部分A+B
描述
正整数A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A=3862767,DA=6,则A的“6 部分”PA是 66,因为A中有 2 个 6。
现给定A、DA、B、DB,请编写程序计算PA+PB。
输入
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0<A,B<109。
输出
在一行中输出PA+PB的值。
输入样例 1
3862767 6 13530293 3
输出样例 1
399
输入样例 2
3862767 1 13530293 8
输出样例 2
0
输入样例 3
12342 2 123456777 1
输出样例 3
23
思路:其实这道题思路非常简单,主要就是最后的时候需要将字符串数组
转换成Sting,再将其转换为int。使用了StringBuffer中的append()方法。
我的代码还不够简洁,应该还可以在进行优化。
看了大神PauperGuy写的代码,太惊艳了。
import java.util.Scanner;
//传入:3862767 6 13530293 3
public class Main {
static String DA;
static String DB;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] A = sc.next().split("");//3 8 6 2 7 6 7
DA = sc.next();//6
String[] B = sc.next().split("");//1 3 5 3 0 2 9 3
DB = sc.next();//3
int valueA = 0;
for (String s : A) {
if (s.equals(DA)) {
valueA++;//此时valueA=2
}
}
int valueB = 0;
for (String s : B) {
if (s.equals(DB)) {
valueB++;//此时valueB=3
}
}
//需要分4种情况,分别判断
if (valueA != 0 && valueB != 0) {
System.out.println(pa1(valueA)+pb1(valueB));
}
if (valueA==0&&valueB!=0){
System.out.println(pb1(valueB));
}
if (valueA!=0&&valueB==0){
System.out.println(pa1(valueA));
}
if (valueA==0&&valueB==0){
System.out.println("0");
}
}
public static int pa1(int valueA){
String[] PA = new String[valueA];
for (int i = 0; i < valueA; i++) {
PA[i] = DA;
}//此时PA为6 6
StringBuffer sb = new StringBuffer();
for (String s : PA) {
sb.append(s);
}
String PA1 = sb.toString();//将PA字符串数组转换为String,再转换为int
int pa = Integer.parseInt(PA1);
return pa;
}
public static int pb1(int valueB){
String[] PB = new String[valueB];
for (int i = 0; i < valueB; i++) {
PB[i] = DB;//此时PB为3 3 3
}
StringBuffer sb1 = new StringBuffer();
for (String s : PB) {
sb1.append(s);
}
String PB1 = sb1.toString();
int pb = Integer.parseInt(PB1);
return pb;
}
}
展示大神的代码
package com.hbut.pat;
import java.util.Scanner;
public class Pat_1016 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a=sc.next();
int da=sc.nextInt();
String b=sc.next();
int db=sc.nextInt();
int pa=0,pb=0;
for(int i=0;i<a.length();i++) {
if(a.charAt(i)-'0'==da)
pa=pa*10+da;
}
for(int j=0;j<b.length();j++) {
if(b.charAt(j)-'0'==db)
pb=pb*10+db;
}
System.out.println(pa+pb);
}
}