拼写正确-算法题

题目描述 给定一个非负整数 NN,你的任务是计算 NN 的所有数字的总和,并以英语输出总和的每个数字。 输入格式 共一行,包含一个整数 NN,整数 NN 可能会出现前导0,比如:00123,对应的整数是123。 输出格式 共一行,用英语输出总和的每个数字,单词之间用空格隔开。

输入数据 1

12345

Copy

输出数据 1

one five
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String n = scanner.next();
        int sum = 0;
        for (int i = 0; i < n.length(); i++) {
            sum += n.charAt(i) - '0';
        }
        String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        String ans = "";
        while (sum > 0) {
            int digit = sum % 10;
            ans = words[digit] + " " + ans;
            sum /= 10;
        }
        System.out.println(ans.trim());
    }
}

题目描述

给定一个非负整数N,计算N的所有数字之和并输出每个数字的英语表述。

输入格式

一个整数N。

输出格式

用英语输出N的所有数字之和,并以英语输出总和的每个数字。

例如,若N=123,则所有数字之和为6,输出为:

six

如果N=100,则所有数字之和为1,输出为:

one

解题思路

这道题需要先计算N的所有数字之和,然后将结果转换为英语表述输出。我们可以分两步来实现。

首先,对于一个非负整数N,我们可以将其每一位数字取出来进行累加求和,代码如下:

int sum = 0; for (int i = 0; i < n.length(); i++) { sum += n.charAt(i) - '0'; }

其中n.charAt(i)可以取出N的第i位数字,'0'是字符0的ASCII码,用N的第i位数字减去'0'就可以得到该数字的真实值,将其累加到sum中即可得到所有数字之和。

接下来,我们需要将数字之和转换为英语表述。我们可以创建一个字符串数组words,用来存储数字0到9的英语表述,代码如下:

String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

然后,从数字之和的末位开始取每一位数字,查找其在words数组中的对应英语表述,并将其加入结果字符串ans中,代码如下:

String ans = ""; while (sum > 0) { int digit = sum % 10; ans = words[digit] + " " + ans; sum /= 10; }

注意,这里需要将数字之和从末位开始取,所以要用取模运算来获取末位数字,然后将其对应的英语表述加入结果字符串ans中。同时,由于英语表述之间需要用空格隔开,所以每次添加完一个表述后,需要在表述和结果字符串之间添加一个空格。最后输出结果字符串即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值