824. 山羊拉丁文 : 简单模拟题

简介: 824. 山羊拉丁文 : 简单模拟题

网络异常,图片无法展示
|


题目描述



这是 LeetCode 上的 824. 山羊拉丁文 ,难度为 简单


Tag : 「模拟」


给你一个由若干单词组成的句子 sentence,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。


请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:


  • 如果单词以元音开头('a','e','i','o','u'),在单词后添加"ma"
  • 例如,单词 "apple" 变为 "applema"
  • 如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"
  • 例如,单词 "goat" 变为 "oatgma"
  • 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'a',索引从11开始。
  • 例如,在第一个单词后添加 "a",在第二个单词后添加 "aa",以此类推。


返回将 sentence 转换为山羊拉丁文后的句子。


示例 1:


输入:sentence = "I speak Goat Latin"
输出:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
复制代码


示例 2:


输入:sentence = "The quick brown fox jumped over the lazy dog"
输出:"heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
复制代码


提示:


  • 1 <= sentence.length <= 1501<=sentence.length<=150
  • sentence 由英文字母和空格组成
  • sentence 不含前导或尾随空格
  • sentence 中的所有单词由单个空格分隔


模拟



根据题意进行模拟即可。


代码:


class Solution {
    public String toGoatLatin(String s) {
        int n = s.length();
        String last = "a";
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; ) {
            int j = i;
            while (j < n && s.charAt(j) != ' ') j++;
            if ("aeiouAEIOU".indexOf(s.charAt(i)) >= 0) {
                sb.append(s.substring(i, j)).append("ma");
            } else {
                sb.append(s.substring(i + 1, j)).append(s.charAt(i)).append("ma");
            }
            sb.append(last);
            last += "a";
            i = j + 1;
            if (i < n) sb.append(" ");
        }
        return sb.toString();
    }
}
复制代码


  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)


最后



这是我们「刷穿 LeetCode」系列文章的第 No.824 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。


在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。


为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:github.com/SharingSour…


在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

相关文章
|
2月前
|
数据采集 人工智能 API
AI 智能体项目的费用
AI智能体开发费用远超普通编程,涵盖人力(60%-70%)、算力(API或私有GPU年费15万+)、数据工程(3万-10万)及持续调优(年维护费≈开发费20%)。预算从3万元低代码起步,到百万级企业级方案不等。
|
1月前
|
缓存 安全 测试技术
RAID10和RAID5性能对比测试
本文通过实测对比4盘RAID5与RAID10在无缓存(Write Through)下的IO性能:RAID10直接写入达38.7MB/s,远超RAID5的7.4MB/s;启用缓存后RAID5读性能显著提升(128→357MB/s),但写性能仍极低。结论:无BBU保护时,RAID10更安全高效。(239字)
324 2
|
4月前
|
机器学习/深度学习 数据采集 人工智能
构建AI智能体:七十二、交叉验证:从模型评估的基石到大模型时代的演进
交叉验证是机器学习中评估模型性能的核心方法,通过轮换数据划分实现稳健评估。文章系统解析了k折交叉验证的原理与实现,展示其在模型比较和超参数优化中的关键作用。随着大模型时代的到来,传统交叉验证面临计算成本挑战,但核心思想仍应用于下游任务。文章通过可视化案例完整呈现了从数据准备到最终评估的工作流程,强调交叉验证在有限数据场景下的不可替代性,同时指出需要根据任务规模灵活选择评估策略。理解交叉验证的原理与应用是AI从业者的必备能力。
473 16
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
641 0
|
Java
java、javaWeb实验报告!!!
java、javaWeb实验报告!!!
489 0
java、javaWeb实验报告!!!
|
JSON 关系型数据库 MySQL
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
824 1
|
算法 计算机视觉
傅里叶变换
傅里叶变换
954 2
【51单片机】初学者必学的一个矩阵键盘基本项目——(读矩阵键盘的数字显示在LCD屏上)(7)
【51单片机】初学者必学的一个矩阵键盘基本项目——(读矩阵键盘的数字显示在LCD屏上)(7)
|
存储 缓存 Java
java应用提速(速度与激情)
本文将阐述通过基础设施与工具的改进,实现从构建到启动全方面大幅提速的实践和理论。
50361 13
java应用提速(速度与激情)