软件测试工程师面试刷题:简单JAVA算法题以及解法

news/2025/9/30 22:23:53/文章来源:https://www.cnblogs.com/LilianChen/p/19121854

软件测试工程师面试刷题:简单JAVA算法题以及解法

  • 找不同

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

 

示例 1:

输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
 1 class Solution {2     public char findTheDifference(String s, String t) {3         if(s==null) {4             return t.charAt(0);5         }6 7         int[] count = new int[26];8         for(char c:s.toCharArray()){9             //char c是当前字符
10             //'a'是字符常量,在ASCII中值为97
11             // c-'a'计算的是字符c相对于'a'的偏移量
12             //如果c='a', 'a'-'a'=0
13             //如果c='b', 'b'-'a'=1
14             //所以count[0]对应字母a, count[1]对应字母b... 
15             count[c-'a']++;
16         }
17         for(char c: t.toCharArray()){
18             count[c-'a']--;
19             if(count[c-'a']<0){
20                 return c;
21             }
22         }
23         return ' ';
24     }
25 }

 

  • 交替合并字符串

给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。

返回 合并后的字符串 。

示例 1:

输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1:  a   b   c
word2:    p   q   r
合并后:  a p b q c r
 1 class Solution {2     public String mergeAlternately(String word1, String word2) {3         if(word1 ==null) return word2;4         if(word2 == null) return word1;5 6         StringBuilder result = new StringBuilder();7         int i=0;8 9         while(i<word1.length() && i<word2.length()){
10             result.append(word1.charAt(i));
11             result.append(word2.charAt(i));
12             i++;
13         }
14 
15         result.append(word1.substring(i));
16         result.append(word2.substring(i));
17 
18         return result.toString();
19     }
20 }

 

  • 字符串轮转

字符串轮转。给定两个字符串s1s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottleerbottlewat旋转后的字符串)。

示例 1:

 输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True

示例 2:

 输入:s1 = "aa", s2 = "aba"输出:False
 1 class Solution {2     public boolean isFlipedString(String s1, String s2) {3         if(s1==null || s2==null || s1.length()!= s2.length()) {4             return false;5         }6         //如果s2是s1旋转得到的,那么s2一定是s1+s1的子串7         String doubleS1=s1+s1;8         return doubleS1.contains(s2);9     }
10 }

 

  • 判断字符是否唯一

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:

输入: s = "leetcode"
输出: false 

示例 2:

输入: s = "abc"
输出: true
 1 class Solution {2     public boolean isUnique(String astr) {3         if(astr.length()==1 || astr.length()==0){4             return true;5         }6         for(int i=0;i<astr.length()-1;i++){7             for(int j=i+1; j<astr.length();j++){8                 if(astr.charAt(i)==astr.charAt(j)){9                     return false;
10                 }
11             }
12         }
13         return true;
14     }
15 }

 

  • 有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
 1 class Solution {2     public boolean isValid(String s) {3         //如果字符串长度为奇数,肯定不匹配4         if(s.length() %2 !=0) return false;5 6         Stack<Character> stack =new Stack<>();7 8         for(char c : s.toCharArray()){9             //如果是左括号,压入栈中
10             if(c=='(' || c=='{' || c=='['){
11                 stack.push(c);
12             }
13             //如果是右括号
14             else{
15                 //栈为空,已经没有与之相匹配的左括号,返回不匹配
16                 if(stack.isEmpty()){
17                     return false;
18                 }
19                 //弹出栈顶元素,并匹配
20                 char top=stack.pop();
21                 if((c==')' && top != '(') || 
22                 (c==']' && top != '[') || 
23                 (c=='}' && top != '{')) {
24                     return false;
25                 }
26             }
27         }
28         //最终栈为空,说明全部弹出,返回匹配
29         return stack.isEmpty();
30     }
31 }

 

  • 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
 1 class Solution {2     public String longestCommonPrefix(String[] strs) {3         if(strs.length==0) return "";4 5         String ans = strs[0];6         for(int i=1;i<strs.length;i++){7             int j=0;8             for(; j<ans.length() && j<strs[i].length();j++){9                 if(ans.charAt(j)!= strs[i].charAt(j))
10                     break;
11             }
12             ans=ans.substring(0,j);
13         }
14         return ans;
15     }
16 }

 

  • 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, LCD 和 M

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

  • I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
  • X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
  • C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个罗马数字,将其转换成整数。

class Solution {public int romanToInt(String s) {Map<Character, Integer> map = new HashMap<>(); map.put('I',1);map.put('V',5);map.put('X',10);map.put('L',50);map.put('C',100);map.put('D',500);map.put('M',1000);int result=0;int previousvalue=0;for(int i=s.length()-1; i>=0;i--){Character currentChar = s.charAt(i);int currentValue=map.get(currentChar);if(currentValue < previousvalue){result=result-currentValue;}else {result=result+currentValue;}previousvalue=currentValue;}return result;}
}

 

  • 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

class Solution {public int[] twoSum(int[] nums, int target) {int length = nums.length;for(int i=0; i<length-1;i++){for(int j=i+1; j<length;j++){if(nums[i]+nums[j]==target){return new int[]{i,j};}}}return new int[]{};}
}

 

  • 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。
class Solution {public boolean isPalindrome(int x) {if(x<0){return false;}else {int rev=0;int num=x;while(num!=0){rev=rev*10 +num%10;num=num/10;}return (rev==x);}}
}

 

  • 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

 1 class Solution {2     public void merge(int[] nums1, int m, int[] nums2, int n) {3         for(int i=0; i<n; i++){4             nums1[m+i]=nums2[i];5         }6         //Arrays.sort(nums1);7         8         int len=nums1.length;9         //外循环控制排序轮数
10         for(int i=0; i<len-1;i++){
11             //内循环进行相邻元素比较和交换
12             for(int j=0; j<len-1-i;j++){
13                 //如果前面元素大于后面元素,则交换
14                 if(nums1[j]>nums1[j+1]){
15                     //交换元素
16                     int temp = nums1[j];
17                     nums1[j]=nums1[j+1];
18                     nums1[j+1]=temp;
19                 }
20             }
21         }
22     }
23 }

 

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

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

相关文章

济南专业的设计网站免费网站建设 百度收录

NVIDIA Corporation 在 GitHub 的官方主页 References https://github.com/NVIDIA References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

蚌埠做网站有哪些公司买个域名

本文主要向大家详细介绍了jQuery的绑定事件和移除事件的使用方法和示例分享&#xff0c;这里推荐给有需要的小伙伴们参考下。有时候事件执行完了&#xff0c;想取消事件的效果可以通过一定的办法来处理。比如bind()(绑定事件)和unbind()(移除通过bind()方法添加的事件)方法来移…

巩义网站建设价格天津滨海新区落户政策

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的&#xff0c;以下是简单的脚本案例&a…

实用指南:React基础到进阶

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何做营销型手机网站优化做网站招聘的职业顾问

关于DRL的WTI模块&#xff1a; Weighted Token-wise Interaction&#xff1a; 直觉上&#xff0c;并非所有的单词和视频帧都同等重要。我们提供一种自适应方法&#xff0c;来调整每个标记的权重大小&#xff1a; 注&#xff1a;其中两个f函数都是MLP和softmax构成。 WTI的算…

九龙坡网站建设哪家好宝塔 wordpress 教程

在使用M1 在安装cocopods 前时&#xff0c;安装 rvm install 3.0.0遇到 rvm install 3.0.0 Error running __rvm_make -j8 备注: 该图片是借用其他博客图片&#xff0c;因为我的环境解决完没有保留之前错误信息。 解决方法如下&#xff1a; 1. brew uninstall --ignore-depe…

网站上内容列表怎么做的网站开发为什么要用框架

概述分享下最近做的一个mysql大表归档方案&#xff0c;仅供参考。整体思路一、明确哪些大表需做归档1、数据库表概要信息统计SELECTt1.table_schema,t1.table_name,ENGINE,table_rows,CAST( data_length / 1024.0 / 1024.0 AS DECIMAL ( 10, 2 ) ) data_size(M),CAST( index_le…

bat批处理设置临时PATH路径不能访问

前言全局说明一、说明 1.1 环境: Windows 7 旗舰版二、通常设置路径方法 set adb_PATH=d:\adb_dir set PATH=%PATH%;%adb_PATH%直接在命令行里这么写没问题 在bat脚本中,会提示找不到路径下命令三、解决方法 使用环境…

电子商务网站开发工具网站营销外包公司简介

来源&#xff1a;博客丨政策管理作者&#xff1a;贺飞&#xff08;北京大学&#xff09;摘要&#xff1a;量子计算&#xff1a;前途光明 道路曲折量子计算&#xff1a;前途光明 道路曲折&#xff08;一&#xff09;本周&#xff0c;美国国家科学院、工程院和医学院的一个由13…

2025-2026-1 20231301 《信息安全设计》第九周学习总结

View Post2025-2026-1 20231301 《信息安全设计》第九周学习总结2025-2026-1 20231301 《信息安全设计》第九周学习总结 目录作业信息学习内容总结1. 进程的本质2. 系统调用层次结构3. 进程创建与执行完整流程exec() 函…

手机网站锁定竖屏看代码建设部网站水利设计资质

合作官宣 TopOn 正式成为亚太地区首家支持自动创建Admob bidding广告源的聚合平台。目前&#xff0c;在TopOn后台添加Admob广告平台&#xff0c;您只需要重新授权Google账号&#xff0c;即可开通自动创建功能。此前&#xff0c;TopOn 已在24年2月6日官方聚合支持Google biddin…

10. Spring AI + RAG - Rainbow

10. Spring AI + RAG @目录10. Spring AI + RAGRAG概念向量:文本向量化向量数据库匹配检索SearchRequest接入ChatClientRetrievalAugmentationAdvisor最后: RAG 检索增强生成(Retrieval-augmented Generation) 对…

《AI智能体实战研发教程(从0到企业级项目落地)》全网上线|CSDN B站同步首发

《AI智能体实战研发教程(从0到企业级项目落地)》全网上线|CSDN & B站同步首发pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

网站更改备案信息在哪好网站开发

Hive常用函数_20个字符串处理 以下是Hive中常用的字符串处理函数&#xff0c;可用于执行各种字符串处理转换操作。 1. CONCAT()&#xff1a;将多个字符串连接在一起。 SELECT CONCAT(Hello, World); -- Output: HelloWorld2. SUBSTR()&#xff1a;从字符串中提取子字符串&…

9. Spring AI 当中对应 MCP 的操作 - Rainbow

9. Spring AI 当中对应 MCP 的操作 @目录9. Spring AI 当中对应 MCP 的操作MCP问题:使用MCP STDIO 输出配置实操MCP Server现成共用MCP ServerMCP Client通过工具通过 Spring AI 接入 第三方的 MCP Server使用 Spring…

深入解析:JVM 内存结构

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

gudao网站建设闸北东莞网站建设

7-13 p070找出全部子串位置 分数 5 作者 吴敏华 单位 首都师范大学 输入两个串s1,s2&#xff0c;找出s2在s1中所有出现的位置。 前后两个子串的出现不能重叠。例如’aa’在 aaaa 里出现的位置只有0,2 输入格式: 第一行是整数n 接下来有n行&#xff0c;每行两个不带空格的字符…

深圳微信网站建设报价九游手游平台app

一、利用webapps文件夹自动部署这是最简单的方式&#xff0c;只要将网站直接拷贝到&#xff1a;tomcat根目录下的webapps文件夹里举例&#xff1a;helloworld文件夹下创建里index.html文件&#xff0c;然后把helloworld文件夹移动到tomcat根目录下webapps文件夹里&#xff0c;重…

9/30

今天上午上了一节工程实训的课,其中小车红外线测距系统用到了C语言,第一次真正的用到了所学知识,感觉不错,四节课很快过去了,明天就是国庆,开心