部分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;
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("");
DA = sc.next();
String[] B = sc.next().split("");
DB = sc.next();
int valueA = 0;
for (String s : A) {
if (s.equals(DA)) {
valueA++;
}
}
int valueB = 0;
for (String s : B) {
if (s.equals(DB)) {
valueB++;
}
}
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;
}
StringBuffer sb = new StringBuffer();
for (String s : PA) {
sb.append(s);
}
String PA1 = sb.toString();
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;
}
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);
}
}
|