Java每日一练(20230430)

news2024/12/26 22:45:19

目录

1. 文本左右对齐  🌟🌟🌟

2. 求素数和  🌟

3. 整数转换英文表示  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 文本左右对齐

给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。

你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。

要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。

文本的最后一行应为左对齐,且单词之间不插入额外的空格。

说明:

  • 单词是指由非空格字符组成的字符序列。
  • 每个单词的长度大于 0,小于等于 maxWidth
  • 输入单词数组 words 至少包含一个单词。

示例:

输入:
words = ["This", "is", "an", "example", "of", "text", "justification."]
maxWidth = 16
输出:
[
   "This    is    an",
   "example  of text",
   "justification.  "
]

示例 2:

输入:
words = ["What","must","be","acknowledgment","shall","be"]
maxWidth = 16
输出:
[
  "What   must   be",
  "acknowledgment  ",
  "shall be        "
]
解释: 注意最后一行的格式应为 "shall be    " 而不是 "shall     be"
因为最后一行应为左对齐,而不是左右两端对齐,第二行同样为左对齐,这是因为这行只包含一个单词。

示例 3:

输入:
words = ["Science","is","what","we","understand","well","enough","to","explain",
         "to","a","computer.","Art","is","everything","else","we","do"]
maxWidth = 20
输出:
[
  "Science  is  what we",
  "understand      well",
  "enough to explain to",
  "a  computer.  Art is",
  "everything  else  we",
  "do                  "
]

以下程序实现了这一功能,请你填补空白处内容:
```Java
class Solution {
    public List<String> fullJustify(String[] words, int maxWidth) {
        List<String> ret = new ArrayList<>();
        int index = 0;
        while (index < words.length) {
            int cur = index, len = 0;
            while (cur < words.length && len + words[cur].length() + cur - index <= maxWidth) {
                len = len + words[cur++].length();
            }
            cur--;
            StringBuilder sb = new StringBuilder();
            if (cur == words.length - 1) {
                for (int i = index; i <= cur; i++) {
                    sb.append(words[i]);
                    if (i < cur) {
                        sb.append(' ');
                    }
                }
            } else {
                int base = cur > index ? (maxWidth - len) / (cur - index) : (maxWidth - len);
                String baseStr = genSpace(base);
                int left = cur > index ? (maxWidth - len) % (cur - index) : 0;
                String leftStr = genSpace(base + 1);
                for (int i = index; i <= cur; i++) {
                    sb.append(words[i]);
                    ___________________;
                }
            }
            if (sb.length() < maxWidth) {
                sb.append(genSpace(maxWidth - sb.length()));
            }
            ret.add(sb.toString());
            index = cur + 1;
        }
        return ret;
    }
    private String genSpace(int n) {
        char[] cs = new char[n];
        Arrays.fill(cs, ' ');
        return new String(cs);
    }
}
```

出处:

https://edu.csdn.net/practice/26880552

代码:

import java.util.*;
public class fullJustify {
    public static class Solution {
        public List<String> fullJustify(String[] words, int maxWidth) {
            List<String> ret = new ArrayList<>();
            int index = 0;
            while (index < words.length) {
                int cur = index, len = 0;
                while (cur < words.length && len + words[cur].length() + cur - index <= maxWidth) {
                    len = len + words[cur++].length();
                }
                cur--;
                StringBuilder sb = new StringBuilder();
                if (cur == words.length - 1) {
                    for (int i = index; i <= cur; i++) {
                        sb.append(words[i]);
                        if (i < cur) {
                            sb.append(' ');
                        }
                    }
                } else {
                    int base = cur > index ? (maxWidth - len) / (cur - index) : (maxWidth - len);
                    String baseStr = genSpace(base);
                    int left = cur > index ? (maxWidth - len) % (cur - index) : 0;
                    String leftStr = genSpace(base + 1);
                    for (int i = index; i <= cur; i++) {
                        sb.append(words[i]);
                        if (i < cur) {
                            sb.append(left > 0 ? leftStr : baseStr);
                            left--;
                        }
                    }
                }
                if (sb.length() < maxWidth) {
                    sb.append(genSpace(maxWidth - sb.length()));
                }
                ret.add(sb.toString());
                index = cur + 1;
            }
            return ret;
        }
        private String genSpace(int n) {
            char[] cs = new char[n];
            Arrays.fill(cs, ' ');
            return new String(cs);
        }
    }
    public static void main(String[] args) {
        Solution sol = new Solution();
        String[] words = {"This", "is", "an", "example", "of", "text", "justification."};
        int maxWidth = 16;
        for (String str : sol.fullJustify(words, maxWidth)) {
            System.out.println("["+str+"]");
        }
        String[] words2 = {"What","must","be","acknowledgment","shall","be"};
        for (String str : sol.fullJustify(words2, maxWidth)) {
            System.out.println("["+str+"]");
        }
        String[] words3 = {"Science","is","what","we","understand","well","enough","to","explain",
            "to","a","computer.","Art","is","everything","else","we","do"};
        maxWidth = 20;
        for (String str : sol.fullJustify(words3, maxWidth)) {
            System.out.println("["+str+"]");
        }
    }
}

输出:

[This    is    an]
[example  of text]
[justification.  ]
[What   must   be]
[acknowledgment  ]
[shall be        ]
[Science  is  what we]
[understand      well]
[enough to explain to]
[a  computer.  Art is]
[everything  else  we]
[do                  ]

2. 求素数和

求第m个到第n个素数之间的素数和

出处:

https://edu.csdn.net/practice/26880553

代码:

import java.util.Scanner;
public class All {
   public static void main(String[] args) {
      int a[] = new int[200];
      int index = 0;
      for (int i = 1; i < 200; i++) {
         boolean isPrime = true;
         for (int k = 2; k < i; k++) {
            if (i % k == 0) {
               isPrime = false;
               break;
            }
         }
         if (isPrime) {
            a[index++] = i;
            System.out.println(a[index - 1]);
         }
      }
      Scanner small = new Scanner(System.in);
      Scanner large = new Scanner(System.in);
      int m = small.nextInt();
      int n = large.nextInt();
      int sums = 0;
      int suml = 0;
      int sum = 0;
      for (int i = 0; i < m; i++) {
         sums += a[i];
         System.out.print(a[i] + "*");
      }
      for (int i = 0; i < n; i++) {
         suml += a[i];
         System.out.print(a[i] + " ");
      }
      sum = suml - sums;
      System.out.println(sum);
   }
}

输出:


3. 整数转换英文表示

将非负整数 num 转换为其对应的英文表示。

示例 1:

输入:num = 123
输出:"One Hundred Twenty Three"

示例 2:

输入:num = 12345
输出:"Twelve Thousand Three Hundred Forty Five"

示例 3:

输入:num = 1234567
输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:

输入:num = 1234567891
输出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

提示:

  • 0 <= num <= 2^31 - 1

出处:

https://edu.csdn.net/practice/26880554

代码:

import java.util.*;
public class numberToWords {
    public static class Solution {
        String[] withinTwentyNum = new String[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight",
                "Nine", "Ten",
                "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
        String[] theWholeTen = new String[] { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty",
                "Ninety" };
        String[] unit = new String[] { "", "Thousand", "Million", "Billion" };
        public String numberToWords(int num) {
            if (num == 0) {
                return withinTwentyNum[num];
            }
            StringBuilder sb = new StringBuilder();
            int unitCount = 0;
            int temp;
            String[] words = new String[32];
            int wordIndex = 0;
            for (int n = num; num > 0; unitCount++) {
                n = num % 1000;
                num /= 1000;
                if (n == 0) {
                    continue;
                }
                words[wordIndex++] = unit[unitCount];
                temp = n % 100;
                if (n % 100 > 0) {
                    if (temp >= 20) {
                        if (temp % 10 > 0) {
                            words[wordIndex++] = withinTwentyNum[temp % 10];
                        }
                        words[wordIndex++] = theWholeTen[temp / 10];
                    } else {
                        words[wordIndex++] = withinTwentyNum[temp];
                    }
                }
                temp = n / 100;
                if (temp > 0) {
                    words[wordIndex++] = "Hundred";
                    words[wordIndex++] = withinTwentyNum[temp];
                }
            }
            for (int index = wordIndex - 1; index >= 0; index--) {
                sb.append(words[index]).append(" ");
            }
            return sb.toString().trim();
        }
    }
    public static void main(String[] args) {
        Solution sol = new Solution();
        System.out.println(sol.numberToWords(123));
        System.out.println(sol.numberToWords(12345));
        System.out.println(sol.numberToWords(1234567));
        System.out.println(sol.numberToWords(1234567891));
    }
}

输出:

One Hundred Twenty Three
Twelve Thousand Three Hundred Forty Five
One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven
One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mycat的基本介绍及安装

海量数据存储解决方案之分库分表原理解析及mycat安装及使用_已经存在大量数据 可以使用mycat分表吗_踩踩踩从踩的博客-CSDN博客 Mycat核心概念工作原理及高级特性分析_mycat-mini-monitor_踩踩踩从踩的博客-CSDN博客 前言 在之前的文章中&#xff0c;介绍了一部分的mycat&am…

Web App Manager - 将任何网站转换为应用程序

Web App Manager - 将任何网站转换为应用程序 WebApp Manager 是一款实用程序&#xff0c;由 Linux Mint 和 Peppermint 基于 Peppermint 的 ICE 合作创建——用户可以使用该应用程序将他们喜欢的应用程序转换为独立的 Web 应用程序&#xff0c;它最早于 2010 年首次发布&…

CKA/CKS/CKAD认证考试攻略

什么是CKA考试&#xff1f; CKA认证考试是由Linux基金会和云原生计算基金会(CNCF)创建的&#xff0c;以促进Kubernetes生态系统的持续发展。该考试是一种远程在线、有监考、基于实操的认证考试&#xff0c;需要在运行Kubernetes的命令行中解决多个任务。CKA认证考试是专为Kube…

vue---组件基本知识

目录 一、组件基础 二、Props组件交互 三、自定义组件交互 一、组件基础 对于组件&#xff0c;我个人的理解是每个网页其实都是由一个个组件组成的&#xff0c;它可以理解成网页元素的组成单位&#xff0c;下面我们来看下如何将组件加载到页面中。 &#xff08;1&#xff09…

120 · 单词接龙

链接&#xff1a;LintCode 炼码 class Solution { public:/*** param start: a string* param end: a string* param dict: a set of string* return: An integer*/int ladderLength(string &start, string &end, unordered_set<string> &dict) {// write y…

基于springcloud微服务的java课程资源在线学习考试系统

在我国&#xff0c;由于计算机与网络技术的不断发展&#xff0c;信息化建设的不断深入&#xff0c;不管是企业、学校或个人都在结合计算机网络技术队现有的管理或生活中的一些环节进行开发研究&#xff0c;运用计算机进行一些必要的数据信息管理&#xff0c;分析及发布&#xf…

故事连载:AION之殆之永恒的深渊

AION深渊 魔族长老齐西尔内召集了魔族两大司令官&#xff0c;由于天族无法进入伏魔殿&#xff0c;魔族无法进入极乐世界&#xff1b;亚特雷亚事件关系到天魔两族的存亡&#xff0c;天族大神宫尤克类阿斯也意识到事情的严重性&#xff0c;带领天族众将与齐西尔内相约永恒之塔&am…

Centos8手动设置时区、日期、时间,且将时间设置为24小时格式

一、快速设置Centos时间为24小时显示步骤 1.1、查看当前的系统显示时间格式 查看当前Centos系统的时间命令: date 查看后发现Centos系统确实是只显示12小时格式的时间,且使用的不是北京时区时间,因此我们在需要对系统的时区和时间格式需要进行设置。 1.2、快速设…

HTB靶机05-Nibbles-WP

Nibbles 2023-04-04 16:38:48 Scan ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.75 Starting Nmap 7.92 ( https://nmap.org ) at 2023-04-04 16:39 CST Nmap scan report for 10.10.10.75 Host is up (0.43s latency). Not shown: 998 closed tcp ports (…

关于《浏览器如何工作》---塔利加西尔 博客的疑惑与解答

疑惑与解答 1.浏览器组件和浏览器管理的线程是一个概念吗&#xff1f;2.浏览器中的各个线程又是由哪些组件创建与管理的呢&#xff1f;3.为什么使用CDN可以加速JavaScript文件的加载? 1.浏览器组件和浏览器管理的线程是一个概念吗&#xff1f; 浏览器组件和浏览器管理的线程是…

PE系统与U盘启动工具的推荐

PE系统与U盘启动工具 PE系统微PE(快速装系统)优启通(面对各种新旧设备)HotPE(可玩性)FirPE(适合年轻人折腾)Edgeless(随身U盘电脑)WinpeMaker(自定义自己的PE神器)其他PE U盘启动工具Ventoy&#xff08;强烈推荐&#xff09;Rufus&#xff08;推荐&#xff09;Windows USB/DVDE…

IPsec中IKE与ISAKMP过程分析(主模式-消息2)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec协议族中IKE&#xff08;Internet Key Exchange&#xff09;是一种基于ISAKMP的协议&#xff0c;它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说&#xff…

用python绘制RC低通滤波器bode图

用python绘制RC低通滤波器bode图 Bode图 Bode图(国内有译作“伯德图”&#xff0c;也有译作“波特图”)是一种用于描述线性系统的频率响应的图形工具。频率响应是指系统对不同频率的输入信号的响应程度&#xff0c;通常用幅度和相位来表示。Bode图以对数坐标轴的形式显示系统…

瑞吉外卖管理端具体代码

目录 以下是后台的部分代码&#xff1a; EmployeeController CategoryController DishController SetmealController OrderController 具体的代码可到&#xff1a;reggie_take_out: 瑞吉外卖——功能实现 - Gitee.com 全部页面展示: 以下是后台的部分代码&#xf…

2023牛客五一集训派对day1部分题解

F Infinite String Comparision FInfinite String Comparision 题目描述 给你两个可以无限复制自身的字符串 a, b。请你判断其无限复制后两字符串的字典序大小 。 解题思路 我们可以设 s1 a b, s2 b a 则有: 通过观察可见 s1, s2 包含 和 &#xff0c;于是我们比较 …

01 KVM虚拟化简介

文章目录 01 KVM虚拟化简介1.1 简介1.2 虚拟化架构1.3 虚拟化组件1.4 虚拟化特点1.5 虚拟化优势1.6 openEuler虚拟化 01 KVM虚拟化简介 1.1 简介 在计算机技术中&#xff0c;虚拟化是一种资源管理技术&#xff0c;它将计算机的各种实体资源&#xff08;处理器、内存、磁盘、网…

基于simulink采用 QSHB 和 HBPS 算法的混合 MIMO 波束成形仿真

一、前言 本例展示了多输入多输出 &#xff08;MIMO&#xff09; 无线通信系统的 Simulink 模型。无线系统使用混合波束成形技术来提高系统吞吐量。 二、介绍 5G和其他现代无线通信系统广泛使用MIMO波束成形技术进行信噪比&#xff08;SNR&#xff09;增强和空间复用&#xff0…

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件&#xff0c;软件提供了向导式的操作向导&#xff0c;可以有效地恢复电脑或者移动存储设备中丢失的各种文件&#xff0c;包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来&#xff0c;大家期盼许久的EasyRecover…

阿里云u1服务器通用算力型CPU处理器性能测评

阿里云服务器u1通用算力型Universal实例高性价比&#xff0c;CPU采用Intel(R) Xeon(R) Platinum&#xff0c;主频是2.5 GHz&#xff0c;云服务器U1实例的基准vCPU算力与5代企业级实例持平&#xff0c;最高vCPU算力与6代企业级实例持平&#xff0c;提供2c-32c规格和1:1/2/4/8丰富…

16.基于主从博弈理论的共享储能与综合能源微网优化运行研究

说明书 MATLAB代码&#xff1a;基于主从博弈理论的共享储能与综合能源微网优化运行研究 关键词&#xff1a;主从博弈 共享储能 综合能源微网 优化调度 参考文档&#xff1a;《基于主从博弈理论的共享储能与综合能源微网优化运行研究》完全复现 仿真平台&#xff1a;MATLAB …