网站模板下载网站有哪些内容/免费网页制作网站
423. 从英文中重建数字
最初思路
首先要有一个指针,对于3/4/5为一组地跳跃。起初想的是后瞻性,如果符合0-9任意,则更换index、跳跃。此时写了一个函数,用来判断s的截取段和0-9中有无符合。这个思路并没有进行下去,虽然可行,但满地补丁、没有美感,代码量和耗时耗空间量实在太大了。
顺便一提,除了two和six的ascii码量相同外,其他的都各自不同。也可以通过这个来比较,额外判断一下是two还是six。
boolean isMatch(String s,String t){int lenS = s.length();int lenT = t.length();if(lenS!=lenT){return false;}else{IntStream S = s.codePoints().sorted();IntStream T = t.codePoints().sorted();if(S.allMatch((IntPredicate) T)){return true;}else{return false;}}}
解法一、独特标识
计数每个字母的出现次数。使用唯一标识符来确定每个数字的数量。例如,"z" 只出现在 "zero" 中,所以可以用它来确定 0 的数量。逐步减少每个字母的计数,直到恢复所有的数字。
其余见注释,digitOrder里取出偶数放前面很重要
class Solution {public String originalDigits(String s) {// 数字单词与其唯一标识符String[] digits = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};char[] uniqueChars = {'z', 'o', 'w', 't', 'u', 'f', 'x', 's', 'g', 'i'};int[] digitOrder = {0, 2, 4, 6, 8, 1, 3, 5, 7, 9};//02468是具有唯一标识符的数字,奇数是除去前面后有唯一标识符的数字,所以处理顺序自动去了冗余。这里其实有表驱动思想。int[] charCount = new int[26]; // 记录每个字母的出现次数for (char c : s.toCharArray()) {charCount[c - 'a']++;}int[] digitCount = new int[10];//数字的出现计数for (int i = 0; i < 10; i++) {int digit = digitOrder[I];//判断数字char uniqueChar = uniqueChars[digit];//取特殊符int count = charCount[uniqueChar - 'a'];//count标识出现了几次digitCount[digit] = count;//最后计数for (char c : digits[digit].toCharArray()) {//也是表驱动。对于该单词,出现次数里减掉它的所有。charCount[c - 'a'] -= count;}}StringBuilder result = new StringBuilder();//把数字按升序加进去for (int i = 0; i < 10; i++) {while (digitCount[i]-- > 0) {result.append(i);}}return result.toString();}
}
657. 机器人能否返回原点
解法一、x、y坐标模拟
也就是说要模拟机器人移动。面朝方向无所谓,只需要考虑坐标。但是如果模拟二维数组,空间耗费太大了,它实则只需要考虑x坐标和y坐标。不妨直接设俩坐标,判断改换完在不在原点。
本质上是字符统计问题。即R、L出现的次数一致,U、D出现的次数一致。
class Solution {public boolean judgeCircle(String moves) {int len = moves.length();int x = 0;int y = 0;if(len % 2 == 1){//如果是奇数,那么直接返回。return false;}for(int i = 0; i< len;i++){switch (moves.charAt(i)){case'R':x++;break;case'L':x--;break;case'U':y--;break;case'D':y++;break;}}if(x == 0 && y==0){return true;}else{return false;}}
}
551. 学生出勤记录 I
解法一、遍历按条件求解
只需要考虑A和L的情况,分别是计数和后视两位
class Solution {public boolean checkRecord(String s) {int len = s.length();int countA = 0;//记录缺勤次数for(int i = 0;i < len;i++){if(s.charAt(i) == 'A'){countA++;if(countA >1){return false;}}else if(s.charAt(i) == 'L' && len - i > 2){if(s.charAt(i+1) == 'L' && s.charAt(i+2) == 'L'){return false;}}}return true;}
}
解法二、api战士
A第一次出现的下标与最后一次出现的下标比较,并判断是否含有LLL
class Solution {public boolean checkRecord(String s) {return (s.indexOf('A')==s.lastIndexOf('A')) && (!s.contains("LLL"));}
}
696. 计数二进制子串
解法一、分组统计,取最小值
感觉也是脑筋急转弯题。不像简单的。
如"001110",分组统计为231,取2和3的最小2,取3和1的最小1,2+1=3个最小子串
class Solution {public static int countBinarySubstrings(String s) {int len = s.length();int count = 1;if(len == 1)return 0;List<Integer> counts = new ArrayList<>();for(int i = 1;i<len;i++){if(i < len &&s.charAt(i-1) == s.charAt(i)){count++;}else{counts.add(count);count = 1;}}counts.add(count);int sum = 0;for (int i = 1; i < counts.size(); i++) {sum += Math.min(counts.get(i - 1), counts.get(i));}return sum;}
}
解法一的优化版本
对于counts[i],我们只需要和上一个进行比较。所以可以优化掉counts
class Solution {public int countBinarySubstrings(String s) {int ptr = 0, n = s.length(), last = 0, ans = 0;while (ptr < n) {char c = s.charAt(ptr);int count = 0;while (ptr < n && s.charAt(ptr) == c) {++ptr;++count;}ans += Math.min(count, last);last = count;}return ans;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/count-binary-substrings/solutions/367704/ji-shu-er-jin-zhi-zi-chuan-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法二、找"01""10"然后向外扩展
int countBinarySubstrings(string s)
{int i = 0, l = s.size(), sum = 0;while (i < s.size() - 1){if ((s[i] == '0' && s[i + 1] == '1') || (s[i] == '1' && s[i + 1] == '0')){char lov = s[i], hiv = s[i + 1];int lo = i - 1, hi = i + 2;sum++;while (lo >= 0 && hi <= l - 1){if (s[lo] == lov && s[hi] == hiv)sum++;elsebreak;lo--, hi++;}}i++;}return sum;
};
467. 环绕字符串中唯一的子字符串
解法一、动态规划
这个完全没做出来!所以看了题解
感慨一下1或者-25能够这么写好巧妙(a-z是-25,其余是1)
class Solution {public int findSubstringInWraproundString(String p) {int[] dp = new int[26];//26个字母的最大子串数int k = 0;for (int i = 0; i < p.length(); ++i) {if (i > 0 && (p.charAt(i) - p.charAt(i - 1) + 26) % 26 == 1) { // 字符之差为 1 或 -25++k;//计数} else {k = 1;//重置k}dp[p.charAt(i) - 'a'] = Math.max(dp[p.charAt(i) - 'a'], k);//取最大值}return Arrays.stream(dp).sum();//返回求和(也是很巧妙的写法,转为输入流}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/unique-substrings-in-wraparound-string/solutions/1514359/huan-rao-zi-fu-chuan-zhong-wei-yi-de-zi-ndvea/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
535. TinyURL 的加密与解密
解法一、不讲武德
双百通关。本来就是想试试,没想到真可以。假如人与人之间多一点信任。。
public class Codec {// Encodes a URL to a shortened URL.public String encode(String longUrl) {return longUrl;}// Decodes a shortened URL to its original URL.public String decode(String shortUrl) {return shortUrl;}
}
解法二、哈希表+独特标识
自设一个id
public class Codec {private Map<Integer, String> dataBase = new HashMap<Integer, String>();private int id;public String encode(String longUrl) {id++;dataBase.put(id, longUrl);return "http://tinyurl.com/" + id;}public String decode(String shortUrl) {int p = shortUrl.lastIndexOf('/') + 1;int key = Integer.parseInt(shortUrl.substring(p));return dataBase.get(key);}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/encode-and-decode-tinyurl/solutions/1630074/tinyurl-de-jia-mi-yu-jie-mi-by-leetcode-ty5yp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解法三、哈希生成
将哈希值作为 longUrl 的 key,将键值对 (key,longUrl) 插入数据库 dataBase,然后返回带有 key 的字符串作为 shortUrl。UrlToKey用来避免相同字符串反复哈希冲突的情况
其实相当于对二的id加密。以下是哈希函数
Hash(longUrl)=(∑i=0n−1longUrl[i]×k1i)modk2
public class Codec {static final int K1 = 1117;static final int K2 = 1000000007;//两个合适的质数private Map<Integer, String> dataBase = new HashMap<Integer, String>();
//用来存private Map<String, Integer> urlToKey = new HashMap<String, Integer>();
//public String encode(String longUrl) {if (urlToKey.containsKey(longUrl)) {//如果已经有了,那么return "http://tinyurl.com/" + urlToKey.get(longUrl);}int key = 0;long base = 1;for (int i = 0; i < longUrl.length(); i++) {//哈希函数char c = longUrl.charAt(i);key = (int) ((key + (long) c * base) % K2);base = (base * K1) % K2;}while (dataBase.containsKey(key)) {//如果冲突,则加一key = (key + 1) % K2;}dataBase.put(key, longUrl);//存储urlToKey.put(longUrl, key);//反向存储return "http://tinyurl.com/" + key;}public String decode(String shortUrl) {int p = shortUrl.lastIndexOf('/') + 1;int key = Integer.parseInt(shortUrl.substring(p));return dataBase.get(key);}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/encode-and-decode-tinyurl/solutions/1630074/tinyurl-de-jia-mi-yu-jie-mi-by-leetcode-ty5yp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
碎碎念
- 几乎每道题都需要简化/找到独特的基准标识。要么独特标识(423),要么分组讨论(696)本质上是遍历→模拟情况、取出需要的信息
- 学会了Array.stream、一些字符串api的用法,了解到了一点动态规划
昨天挺累的,恰逢周日,就放了一天假,今天写起来果然舒服多了。果然人还是得放过自己jpg每天都能打卡固然很厉害,断了一天后没彻底摆烂也很重要啊!共勉~
六道题写了两小时一刻钟,其中还有不少是看了题解。
相关文章:

字符的统计——423、657、551、696、467、535
423. 从英文中重建数字 最初思路 首先要有一个指针,对于3/4/5为一组地跳跃。起初想的是后瞻性,如果符合0-9任意,则更换index、跳跃。此时写了一个函数,用来判断s的截取段和0-9中有无符合。这个思路并没有进行下去,虽然…...

pytest+allure
安装 下载:github win环境下载zip 环境变量: pycharm: pip install allure-pytest 验证安装 生成结果: if __name__ __main__:pytest.main([-s,test_createTag2.py,--alluredir,result]) 生成报告: allure gener…...

【数据结构】AVL树(平衡二叉搜索树)
文章目录 1.AVL树1.1 AVL树的概念1.2 AVL树节点的定义1.3 AVL树的插入1.4 AVL树的旋转1.4.1 左单旋1.4.2 右单旋1.4.3 右左双旋1.4.4 左右双旋 1.5 AVL树的平衡验证1.6 AVL树的删除1.7 AVL树的性能 1.AVL树 在前面,我们已经介绍过了二叉搜索树,也了解到…...

ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
前言 在做数据库设计时,为了方便进行数据追踪,通常会有几个字段是每个表都有的,比如创建时间、创建人、更新时间、更新人、备注等,在存储这些时间时,要么存储 WEB 服务器的时间,要么存储数据库服务器的时间…...

【HarmonyOS】应用设置屏幕常亮
【HarmonyOS】应用设置屏幕常亮 一、问题背景: 金融类或钱包场景的应用APP,对于付款码,扫一扫等场景都会对屏幕设置常亮。防止屏幕长时间不操作,自动息屏。 目前这种场景的需求也是非常有必要的,也是行业内默认的处理…...

Docker部署Elasticsearch8.6.0 Kibana8.6.0
(1)Docker部署Elasticsearch8.5.3(失败…) 为了匹配springboot3.0.x,安装Elasticsearch:8.5.3 拉取镜像,遇到问题! [rootserver01 ~]# docker pull elasticsearch:8.5.3 8.5.3: Pulling from…...

第四篇论文小记
一、第一次投稿 期刊:《Remote Sensing》 研究方向:人工智能应用 投稿结果:已投被拒 投稿周期:3天 最后更新时间:19 July 2024 投稿流程: 状态时间Pending review16 July 2024Reject by editor19 July …...

python使用 tkinter 生成随机颜色
先看效果: 只要不停点击底部的按钮,每次都会生成新的颜色。炫酷啊。 import random import tkinter import tkinter.messagebox from tkinter import Button# todo """ 1. 设置一个按钮,来让用户选择是否显示颜色值 2. 把按钮换成 Label…...

【Linux学习 | 第1篇】Linux介绍+安装
文章目录 Linux1. Linux简介1.1 不同操作系统1.2 Linux系统版本 2. Linux安装2.1 安装方式2.2 网卡设置2.3 安装SSH连接工具2.4 Linux和Windows目录结构对比 Linux 1. Linux简介 1.1 不同操作系统 桌面操作系统 Windows (用户数量最多)MacOS ( 操作体验好,办公人…...

设计模式-抽象工厂
抽象工厂属于创建型模式。 抽象工厂和工厂设计模式的区别: 工厂模式的是设计模式中最简单的一种设计模式,主要设计思想是,分离对象的创建和使用,在Java中,如果需要使用一个对象时,需要new Class()ÿ…...

Ubunton-24.04 简单配置使用
目录 1.设置 root 密码 2. 防火墙设置 1. 安装防火墙 2. 开启和关闭防火墙 3. 开放端口和服务规则 4. 关闭端口和删除服务规则 5 查看防火墙状态 3. 设置网络 1.设置 root 密码 1. 切换到 root 用户,并输入当前登录账号的密码 sudo -i 2. 设置新密码…...

什么是STP环路保护
在运行生成树协议的网络中,根端口和其他阻塞端口状态是依靠不断接收来自上游设备的BPDU维持。当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换设备的BPDU时,设备会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞…...

Python算法基础:解锁冒泡排序与选择排序的奥秘
在数据处理和算法设计中,排序是一项基础且重要的操作。本文将介绍两种经典的排序算法:冒泡排序(Bubble Sort)和选择排序(Selection Sort)。我们将通过示例代码来演示这两种算法如何对列表进行升序排列。 一…...

QtCMake工程提升类后找不到头文件
链接: QtCMake工程提升类后找不到头文件_qt提升类找不到头文件-CSDN博客 重点: 1.原因:出现问题的原因是Qt creator通过ui文件生成的程序和存放头文件的目录不在一起,但是生成的程序里会在生成目录下找头文件,所以肯…...

Docker核心技术:Docker原理之Cgroups
云原生学习路线导航页(持续更新中) 本文是 Docker核心技术 系列文章:Docker原理之Cgroups,其他文章快捷链接如下: 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术:…...

union的特性和大小端
一、union在c和c语言中的特性 1.共享内存空间:union的所有成员共享同一块内存空间。意味着在同一时刻,union 只能存储其成员 中的一个值。当你修改了union中的一个成员,那么其它成员的值也会被改变,因为它们实际上都是指向同一块…...

个性化IT服务探索实践
探索和实践个性化IT服务,可以为用户提供更优质、定制化的解决方案,从而提升用户体验和满意度。以下是一些具体的步骤和建议,帮助自己在未来探索和实践个性化IT服务。 一、了解用户需求 用户调研和反馈: 进行用户调研,了解用户的需求和痛点。收集用户反馈,通过问卷、采访…...

UE4-打包游戏,游戏模式,默认关卡
一.打包游戏 注意windows系统无法打包苹果系统的执行包,只能使用苹果系统打包。 打包完之后是一个.exe文件。 打包要点: 1.确定好要操控的角色和生成位置。 2.设置默认加载的关卡和游戏模式。 在这个界面可以配置游戏的默认地图和游戏的模式,…...

Unity ShaderLab基础
[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…...

用代理IP会频繁掉线是什么原因?HTTP和SOCKS5协议优劣势是什么?
在使用代理IP的过程中,频繁掉线是一个常见且令人头痛的问题。要解决这一问题,我们需要先了解其原因,然后比较HTTP和SOCKS5两种代理协议的优劣势,以选择最适合的解决方案。 一、代理IP频繁掉线的原因 1. 代理服务器稳定性 代理服…...

MongoDB教程(十三):MongoDB覆盖索引
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言什么是覆盖…...

快速认识EA(Enterprise Architecture)
前言 企业架构,英文是:Enterprise Architecture,简称:EA,是承接企业战略规划与IT建设之间的桥梁,是企业信息化的核心,主要包括业务架构和IT架构。 架构的本质是管理和解决系统的复杂性&#x…...

词云图制作
词云图制作 一、什么是词云 这就是词云。 “词云”的概念最早是美国西北大学新闻学副教授、新媒体专业主任里奇•戈登( Rich Gordon )提出的。词云( Word Cloud ),又称文字云、标签云( Tag Cloud &#x…...

AndroidStudio与手机进行无线调试
(一)、前提条件 一部手机一条USB数据线一部电脑手机和电脑连接到同一个 Wifi开启手机的USB调试功能开启手机的无线调试功能 (二)、操作步骤 1、 将手机和电脑用USB数据线连接 2、 打开 终端,输入 adb devices ,查看手机和电脑是否连接成功。如下图: 2、…...

脉冲编码调制(PCM,Pulse Code Modulation)简介
脉冲编码调制(PCM,Pulse Code Modulation) 脉冲编码调制(PCM,Pulse Code Modulation)是一种将模拟信号转换为数字信号的技术。在音频处理、电话通信以及其他许多领域都有广泛应用。PCM通过采样、量化、编码等三个主要步骤将模拟信号转换为数…...

Pytorch transforms 的研究
绝对路径与相对路径差别 transforms的使用 from torchvision import transforms from PIL import Imageimg_path "dataset/train/bees/16838648_415acd9e3f.jpg" img Image.open(img_path) tensor_trans transforms.ToTensor() tensor_img tensor_trans(img) prin…...

一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等
一窥模板的替换和匹配方式:偏特化的参数比泛化版本的还要多:判断是不是std::pair<,>。_stdpair模板参数太多-CSDN博客 简介 在一个项目里,调用了第三封的库,这个库里面有个类用的很多,而且其构…...

《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》
《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 Pix2Pix模型概述 Pix2Pix是一种基于条件生成对抗网络(cGAN)的图像转换模型&#x…...

关于c#的简单应用三题
#region 输入一个正整数,求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…...

(十三)Spring教程——依赖注入之工厂方法注入
1.工厂方法注入 工厂方法是在应用中被经常使用的设计模式,它也是控制反转和单例设计思想的主要实现方法。由于Spring IoC容器以框架的方式提供工厂方法的功能,并以透明的方式开放给开发者,所以很少需要手工编写基于工厂方法的类。正是因为工厂…...