Java常用类与基础API--String常见算法题目

文章目录

  • 一、面试题
    • (1)题1
  • 二、常见算法题目
    • (1)题1
    • (2)题2
    • (3)题3
    • (4)题4
    • (5)题5
  • 三、案例

一、面试题

(1)题1

🌋题目描述

下面代码输出结果是?

🌱代码

package StringTest;/*** ClassName: StringTest* Package: StringTest* Description:*  考查:方法参数的值传递机制、String的不可变性* @Author 雨翼轻尘* @Create 2024/2/16 0016 9:47*/public class StringTest {String str = "good";char[] ch = { 't', 'e', 's', 't' };public void change(String str, char ch[]) {str = "test ok";ch[0] = 'b';}public static void main(String[] args) {StringTest ex = new StringTest();ex.change(ex.str, ex.ch);System.out.println(ex.str); //goodSystem.out.println(ex.ch); //best}
}

🍺输出

image.png

🍰分析

凡是涉及到参数传递机制,基本数据类型传递数据值,引用数据类型传递地址值。

image.png

当改变"test ok"的时候,副本是由于指向的地址发生了变化导致内容发生了变化,而原来的实参str指向的地址内容(good)没有改变,因此原来的str仍然为good。

这一点与c++中常用指针参数不同,传入指针参数时,是可以修改指向地址的内容,因此重新赋值会导致在指向地址上的内容发生变化,而Java中String不变性是改变副本的地址指向从而改变内容而不是在实参指向地址的内容上覆盖原值。

方法里面的str只是形参,没有改实参。

必须在原地址上修改它指向的内容才可以,这里的str是参数,重新赋值了,换了一个地址,不影响原来地址的数据。

二、常见算法题目

(1)题1

🌋题目描述

模拟一个trim方法,去除字符串两端的空格。

🌱代码

package StringTest;/*** ClassName: StringTest1* Package: StringTest* Description:*  题目1:模拟一个trim方法,去除字符串两端的空格。* @Author 雨翼轻尘* @Create 2024/2/16 0016 10:49*/
//题目1:
public class testMyTrim{public static void main(String[] args) {MyTrim str=new MyTrim();String str1 = "   abcd   ";String str2 = " ";String str3=str.myTrim1(str1);String str4 = str.myTrim1(str2);System.out.println("---" + str3 + "---");   //---abcd---System.out.println("---" + str4 + "---");   //------}
}class MyTrim {public String myTrim1(String str) {if (str != null) {int start = 0;// 用于记录从前往后首次索引位置不是空格的位置的索引int end = str.length() - 1;// 用于记录从后往前首次索引位置不是空格的位置的索引while (start < end && str.charAt(start) == ' ') {start++;}while (start < end && str.charAt(end) == ' ') {end--;}if (str.charAt(start) == ' ') {return "";}return str.substring(start, end + 1);}return null;}
}

🍺输出

image.png

🍰分析

比如此时输入了一个字符串,从前往后找到第一个没有空格的位置,将索引记一下;然后从后往前找第一个没有空格的位置,将索引记一下。

然后取当前字符串的substring即可。

☕注意

①char charAt(index):返回[index]位置的字符。

②String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。

(2)题2

🌋题目描述

将一个字符串进行反转。将字符串中指定部分进行反转。比如“ab**cdef**g”反转为”ab**fedc**g”

🍰分析

【方法一】

String转为char型数组,针对于char型数组进行相应位置的反转,反转之后再将char型数组转为String。

【方法二】

将要变换的字符串分为三部分,先输出前面的一部分,中间的一部分倒着输出,然后拼接上最后的一部分。

🌱代码1

package StringTest;/*** ClassName: StringTest2* Package: StringTest* Description:*      题目2:将一个字符串进行反转。将字符串中指定部分进行反转。*       比如"abcdefg"反转为"abfedcg"* @Author 雨翼轻尘* @Create 2024/2/16 0016 11:06*/
public class StringTest2 {public static void main(String[] args) {ReverseTest test=new ReverseTest();String s="abcdefg";String s1 = test.reverse(s, 2, 5);//索引号从0开始,比如[2,5]System.out.println(s1); //"abfedcg"}
}/*
* 方法一、将String转为char型数组,针对于char型数组进行相应位置的反转,反转之后再将char型数组转为String
*/class ReverseTest{public String reverse(String str,int fromIndex,int toIndex){//1.将String转化为char[]char[] arr = str.toCharArray();//2.让char[]数组某一段反转for (int i = fromIndex,j=toIndex; i <j ; i++,j--) {char temp=arr[i];arr[i]=arr[j];arr[j]=temp;}//3.将char[]返回Stringreturn new String(arr);}
}

🍺输出1

image.png


🌱代码2

package StringTest;/*** ClassName: StringTest2* Package: StringTest* Description:*      题目2:将一个字符串进行反转。将字符串中指定部分进行反转。*       比如"abcdefg"反转为"abfedcg"* @Author 雨翼轻尘* @Create 2024/2/16 0016 11:06*/
public class StringTest2 {public static void main(String[] args) {ReverseTest test=new ReverseTest();String s="abcdefg";String s1 = test.reverse(s, 2, 5);//索引号从0开始,比如[2,5]System.out.println(s1); //"abfedcg"}/*
* 方法二、将要变换的字符串分为三部分,先输出前面的一部分,中间的一部分倒着输出,然后拼接上最后的一部分
*/class ReverseTest{public String reverse(String str,int fromIndex,int toIndex){//1.获取str的第1部分String finalStr=str.substring(0,fromIndex); //[0,fromIndex) --> ab//2.拼接上第2部分for (int i = toIndex; i >= fromIndex; i--) { //从后往前倒着来finalStr+=str.charAt(i);    //取出指定位置的字符,拼接到第1部分后面}   //循环结束 --> abfedc//3.拼接上第3部分finalStr+=str.substring(toIndex+1);return finalStr;}}

🍺输出2

image.png

☕注意

  • public char[] toCharArray():将字符串中的全部字符存放在一个字符数组中的方法。
  • String 类的构造器:String(char[]) 和 String(char[],int offset,int length) 分别用字符数组中的全部字符和部分字符创建字符串对象。
  • String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
  • String substring(int beginIndex) :返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
  • char charAt(index):返回[index]位置的字符。

🎲方式一和方式二哪个性能更好?

方式一更好。

方式二中finalStr+=str.substring(toIndex+1);操作,每次+=的时候,+前后有变量参与,都是new一个新的字符串,这里拼接了四次,那么就需要创建四次空间,有点浪费。速度也比较慢。

方式一中直接拿char型数组在交换,没有新内存的开辟。在原有数据上操作,速度也会更快一些。

(3)题3

🌋题目描述

获取一个字符串在另一个字符串中出现的次数

比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数。

🌱代码

package StringTest;/*** ClassName: StringTest3* Package: StringTest* Description:*    题目3:获取一个字符串在另一个字符串中出现的次数。*       比如:获取"ab"在 "abkkcadkabkebfkabkskab" 中出现的次数* @Author 雨翼轻尘* @Create 2024/3/27 0027 9:19*/public class StringTest3 {public static void main(String[] args) {getSubString test=new getSubString();String subStr="ab";String str="abkkcadkabkebfkabkskab";int count=test.getSubStringCount(str,subStr);System.out.println(count);}
}class getSubString{/*** 判断字符串subStr在str中出现的次数* @param str* @param subStr 子字符串* @return  返回次数*/public int getSubStringCount(String str,String subStr){int count=0;    //记录ab出现的次数if(str.length()>=subStr.length()){int index=str.indexOf(subStr);  //返回字符串subStr在str中第一次出现的索引while(index>=0){   //如果index大于等于0,则让count++count++;index=str.indexOf(subStr,index+subStr.length());}}return count;}
}

🍺输出

image.png

🍰分析

通过观察,"ab"出现了4次。

我们可以写一个方法,用count来记录出现的次数。如下:

public class StringTest3 {/*** 判断字符串subStr在str中出现的次数* @param str* @param subStr 子字符串* @return  返回次数*/public int getSubStringCount(String str,String subStr){ int count=0;    //记录ab出现的次数return count;}
}

这里使用indexOf来寻找字符串subStr第一次出现的索引。

public int getSubStringCount(String str,String subStr){int count=0;    //记录ab出现的次数int index=str.indexOf(subStr);  //返回字符串subStr在str中第一次出现的索引if(index>=0){   //如果index大于等于0,则让count++count++;}return count;
}

这里使用if不太合适,因为不会只找一次,还需要接着判断,所以改用while

从哪里开始找?从上一个找到的字符串后面开始继续找。

刚才已经在index位置找到了,这里不能写index

image.png

具体看图:
image.png

所以应该这样写:str.indexOf(subStr,index+subStr.length());

比如获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数,第一次找到“ab”返回索引index是0,然后应该从“0+ab长度”的位置开始继续找,即从索引为2的位置(k)继续找。

若是找到了,就返回索引index,然后判断index是大于等于0的,继续循环,让count++,直到没有找到然后返回index为-1,循环结束。

如下:

public class StringTest3 {/*** 判断字符串subStr在str中出现的次数* @param str* @param subStr 子字符串* @return  返回次数*/public int getSubStringCount(String str,String subStr){int count=0;    //记录ab出现的次数int index=str.indexOf(subStr);  //返回字符串subStr在str中第一次出现的索引while(index>=0){   //如果index大于等于0,则让count++count++;index=str.indexOf(subStr,index+subStr.length());}return count;}
}

接下来做一个测试:

public class StringTest3 {/*** 判断字符串subStr在str中出现的次数* @param str* @param subStr 子字符串* @return  返回次数*/public int getSubStringCount(String str,String subStr){int count=0;    //记录ab出现的次数int index=str.indexOf(subStr);  //返回字符串subStr在str中第一次出现的索引while(index>=0){   //如果index大于等于0,则让count++count++;index=str.indexOf(subStr,index+subStr.length());}return count;}@Testpublic void test2(){String subStr="ab";String str="abkkcadkabkebfkabkskab";int count=getSubStringCount(str,subStr);System.out.println(count);}
}

输出:

image.png

这里还可以提前做一个判断,str的长度需要大于等于子串subStr的长度:(若不是,则直接返回count的值0)

image.png

☕注意

  • int indexOf(xx):从前往后找当前字符串中xx,如果有则返回第一次出现的下标,要是没有就返回-1。
  • int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

(4)题4

🌋题目描述

获取两个字符串中最大相同子串

比如:

str1 = "abcwerthelloyuiodef“;str2 = “cvhellobnm”

提示:将短的那个串进行长度依次递减的子串与较长的串比较。

🌱代码

package StringTest;/*** ClassName: StringTest4* Package: StringTest* Description:*  题目4:获取两个字符串中最大相同子串。比如:*       str1 = "abcwerthelloyuiodef";*       str2 = "cvhellobnm"*       提示:将短的那个串进行长度依次递减的子串与较长的串比较。* @Author 雨翼轻尘* @Create 2024/3/27 0027 10:51*/import org.junit.Test;import java.util.Arrays;public class StringTest4 {//题目4// 如果只存在一个最大长度的相同子串public String getMaxSameSubString(String str1, String str2) {if (str1 != null && str2 != null) {String maxStr = (str1.length() > str2.length()) ? str1 : str2;String minStr = (str1.length() > str2.length()) ? str2 : str1;int len = minStr.length();for (int i = 0; i < len; i++) {// 0 1 2 3 4 此层循环决定要去几个字符for (int x = 0, y = len - i; y <= len; x++, y++) {if (maxStr.contains(minStr.substring(x, y))) {return minStr.substring(x, y);}}}}return null;}// 如果存在多个长度相同的最大相同子串// 此时先返回String[],后面可以用集合中的ArrayList替换,较方便public String[] getMaxSameSubString1(String str1, String str2) {if (str1 != null && str2 != null) {StringBuffer sBuffer = new StringBuffer();String maxString = (str1.length() > str2.length()) ? str1 : str2;String minString = (str1.length() > str2.length()) ? str2 : str1;int len = minString.length();for (int i = 0; i < len; i++) {for (int x = 0, y = len - i; y <= len; x++, y++) {String subString = minString.substring(x, y);if (maxString.contains(subString)) {sBuffer.append(subString + ",");}}System.out.println(sBuffer);if (sBuffer.length() != 0) {break;}}String[] split = sBuffer.toString().replaceAll(",$", "").split("\\,");return split;}return null;}// 如果存在多个长度相同的最大相同子串:使用ArrayList (第12章集合章节中讲ArrayList)// public List<String> getMaxSameSubString1(String str1, String str2) {//    if (str1 != null && str2 != null) {//       List<String> list = new ArrayList<String>();//       String maxString = (str1.length() > str2.length()) ? str1 : str2;//       String minString = (str1.length() > str2.length()) ? str2 : str1;////       int len = minString.length();//       for (int i = 0; i < len; i++) {//          for (int x = 0, y = len - i; y <= len; x++, y++) {//             String subString = minString.substring(x, y);//             if (maxString.contains(subString)) {//                list.add(subString);//             }//          }//          if (list.size() != 0) {//             break;//          }//       }//       return list;//    }////    return null;// }@Testpublic void testGetMaxSameSubString() {String str1 = "abcwerthelloyuiodef";String str2 = "cvhellobnmiodef";String[] strs = getMaxSameSubString1(str1, str2);System.out.println(Arrays.toString(strs));}}

🍺输出

image.png

🍰分析

两个地位平等的字符串,找最大相同子串。

先找到比较短的那个字符串,然后看看是否在长的字符串中存在(contains);若没有,那么就在短的字符串中截一段(subString),再次在长的字符串中寻找。一直到返回值为true,就是要找的那个字符串。

①全部
image.png

②砍最后一个字母
image.png

③砍最后两个字母
image.png

④砍最后三个字母
image.png

以此类推。

(5)题5

🌋题目描述

对字符串中字符进行自然顺序排序

提示:

1)字符串变成字符数组。

2)对数组排序,选择,冒泡,Arrays.sort();

3)将排序后的数组变成字符串。

🌱代码

package StringTest;import org.junit.Test;import java.util.Arrays;/*** ClassName: StringTest5* Package: StringTest* Description:*  题目5:对字符串中字符进行自然顺序排序。*       提示:*       1)字符串变成字符数组。*       2)对数组排序,选择,冒泡,Arrays.sort();*       3)将排序后的数组变成字符串。* @Author 雨翼轻尘* @Create 2024/3/27 0027 10:54*/
public class StringTest5 {//题目5@Testpublic void testSort() {String str = "abcwerthelloyuiodef";char[] arr = str.toCharArray();Arrays.sort(arr);String newStr = new String(arr);System.out.println(newStr);}
}

🍺输出

image.png

三、案例

🌋题目描述

案例:模拟用户登录

(1)定义用户类,属性为用户名和密码,提供相关的getter和setter方法,构造器,toString()。

(2)使用数组存储多个用户对象。

(3)录入用户和密码,对比用户信息,匹配成功登录成功,否则登录失败。

  • 登录失败时,当用户名错误,提示没有该用户。
  • 登录失败时,当密码错误时,提示密码有误。

效果如图所示:

image.png

🌱代码

【User.java】

package StringTest2;/*** ClassName: User* Package: StringTest2* Description:*      定义用户类,属性为用户名和密码,提供相关的getter和setter方法,构造器,toString()。* @Author 雨翼轻尘* @Create 2024/3/28 0028 19:12*/
public class User {private String name;    //用户名private String password;    //密码public User() {}public User(String name, String password) {this.name = name;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getpassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return name+"-"+password;}
}

【UserTest.java】

package StringTest2;import java.util.Scanner;/*** ClassName: UserTest* Package: StringTest2* Description:** @Author 雨翼轻尘* @Create 2024/3/28 0028 19:16*/
public class UserTest {public static void main(String[] args) {//1.创建数组并初始化几个User对象User[] arr=new User[3];arr[0]=new User("Tom","7777");arr[1]=new User("Jeck","8888");arr[2]=new User("Jerry","9999");System.out.println("库中的用户有:");for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]); //调用toString方法}//2.实例化Scanner,获取输入的用户名和密码Scanner scan=new Scanner(System.in);System.out.print("请输入用户名: ");String userName=scan.next();System.out.println("请输入密码");String password=scan.next();//3.遍历数组元素,匹配用户名和密码boolean isFlag=true;for (int i = 0; i < arr.length; i++) {if(arr[i].getName().equals(userName) ){ //存在此用户名isFlag=false;   //找到用户名就改一下值if(arr[i].getpassword().equals(password)){System.out.println("登录成功:"+userName);}else{System.out.println("密码错误");}break;}}if(isFlag){System.out.println("没有该用户");}scan.close();}
}

🍺输出

①登录成功

image.png

②密码错误

image.png

③没有该用户

image.png

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

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

相关文章

2024/4/1—力扣—删除字符使频率相同

代码实现&#xff1a; 思路&#xff1a; 步骤一&#xff1a;统计各字母出现频率 步骤二&#xff1a;频率从高到低排序&#xff0c;形成频率数组 步骤三&#xff1a;频率数组只有如下组合符合要求&#xff1a; 1, 0...0n 1, n...n (, 0)n...n, 1(, 0) bool equalFrequency(char…

CVE-2024-3148 DedeCms makehtml_archives_action sql注入漏洞分析

DedeCMS&#xff08;也称为织梦CMS&#xff09;是一款基于PHPMySQL的开源内容管理系统。 在 DedeCMS 5.7.112 中发现一个被归类为严重的漏洞。此漏洞会影响某些未知文件dede/makehtml_archives_action.php的处理。操作导致 sql 注入。攻击可能是远程发起的。该漏洞已向公众披露…

【服务器uwsgi + flask + nginx的搭建】

目录 服务器uwsgi flask nginx的搭建1. 安装必要的软件2. 启动nginx服务3. 测试Nginx4. 配置uwsgi和flask5. 配置nginx 服务器uwsgi flask nginx的搭建 1. 安装必要的软件 安装Python、uWSGI、Flask 和 Nginx。 # Ubuntu 安装命令 sudo apt-get update sudo apt-get ins…

03-JAVA设计模式-建造者模式

建造者模式 什么是建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种对象构建的设计模式&#xff0c;它允许你通过一步一步地构建一个复杂对象&#xff0c;来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离&#xff0c;使得…

大语言模型上下文窗口初探(下)

由于篇幅原因&#xff0c;本文分为上下两篇&#xff0c;上篇主要讲解上下文窗口的概念、在LLM中的重要性&#xff0c;下篇主要讲解长文本能否成为LLM的护城河、国外大厂对长文本的态度。 3、长文本是护城河吗&#xff1f; 毫无疑问&#xff0c;Kimi从一开始就用“长文本”占领…

力扣 583. 两个字符串的删除操作

题目来源&#xff1a;https://leetcode.cn/problems/delete-operation-for-two-strings/description/ C题解1&#xff1a;动态规划 寻找word1和word2拥有的公共最长子序列&#xff0c;之后分别对word1和word2进行删除操作&#xff0c;即可使word1和word2相等。 寻找公共最长子…

【引子】C++从介绍到HelloWorld

C从介绍到HelloWorld 一、C的介绍1. 简介2. 应用场景3. C的标准![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3efb0f207f647729b92c0b5bcd4b330.png)4. C的运行过程 二、Visual Studio的安装1. 什么是Visual Studio2. Visual Studio的安装 三、完成HelloWorld1.…

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

Windows系统C盘空间优化进阶&#xff1a;磁盘清理与Docker日志管理 文章目录 Windows系统C盘空间优化进阶&#xff1a;磁盘清理与Docker日志管理磁盘清理工具 使用“运行”命令访问磁盘清理利用存储感知自动管理空间清理WinSxS文件夹结合手动清理策略 小结删除临时文件总结&…

2024新版PHP在线客服系统多商户AI智能在线客服系统源码机器人自动回复即时通讯聊天系统源码PC+H5

搭建环境&#xff1a; 服务器 CPU 2核心 ↑ 运存 2G ↑ 宽带 5M ↑ 服务器操作系统 Linux Centos7.6-7.9 ↑ 运行环境&#xff1a; 宝塔面板 Nginx1.18- 1.22 PHP 7.1-7.3 MYSQL 5.6 -5.7 朵米客服系统是一款全功能的客户服务解决方案&#xff0c;提供多渠道支持…

html5分步问卷调查表模板源码

文章目录 1.设计来源1.1 问卷调查11.2 问卷调查21.3 问卷调查31.4 问卷调查41.5 问卷调查51.6 问卷调查6 2.效果和源码2.1 完整效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/137454703 html5分…

simulink 的stm32 ADC模块输出在抽筋,不知为何

% outtypecast(uint16(1000),uint8) % 10003E8,E8232,out232 3 function [y,len] myfcn(u1) headuint8([255 85]);%帧头 out1typecast(uint16(u1),uint8); % out2typecast(uint16(u2),uint8); y[head,out1]; lenuint16(length(y)); 2023b版本&#xff0c;stm32硬件支持…

Azure runbook 使用用户托管标识查看资源状态

Azure runbook 使用用户托管标识查看资源状态 在托管标识里创建用户托管标识在被查看或变更资源进行授权创建自动化账号和runbook发布脚本添加计划 在托管标识里创建用户托管标识 在被查看或变更资源进行授权 这里是选取的Analysis Services 资源 创建自动化账号和runbook 发布…

探索K-近邻算法(KNN):原理、实践应用与文本分类实战

第一部分&#xff1a;引言与背景 KNN算法在机器学习领域的重要性及其地位 KNN算法作为机器学习中的基石之一&#xff0c;由于其概念直观、易于理解并且不需要复杂的模型训练过程&#xff0c;被广泛应用于多种场景。它在监督学习中占据着特殊的位置&#xff0c;尤其适用于实时…

【C#】读取指定XML节点

&#x1f4f0;XML文件 <?xml version"1.0" encoding"utf-8"?> <configuration><userSettings><Internal.Settings type"Desktop"><setting name"StatsDisplayCount" serializeAs"String">…

海量智库 | ANY权限原理介绍

ANY权限是Vastbase中的一种特殊的管理权限&#xff0c;用户能够通过ANY权限执行更广泛的操作&#xff0c;更加便利的管理数据库。 本文将为您介绍ANY权限管理的相关原理。 ANY权限管理相关解释 ANY权限管理&#xff0c;是对数据库内的某一类对象的所有实体进行特定的权限管理…

SQLite 4.9的 OS 接口或“VFS”(十三)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite字节码引擎&#xff08;十二&#xff09; 下一篇:SQLite 4.9的虚拟表机制(十四) 1. 引言 本文介绍了 SQLite OS 可移植性层或“VFS” - 模块位于 SQLite 实现堆栈底部 提供跨操作系统的可移植性。 VFS是Virtual File…

TiDB 慢查询日志分析

导读 TiDB 中的慢查询日志是一项 关键的性能监控工具&#xff0c;其主要作用在于协助数据库管理员追踪执行时间较长的 SQL 查询语句。 通过记录那些超过设定阈值的查询&#xff0c;慢查询日志为性能优化提供了关键的线索&#xff0c;有助于发现潜在的性能瓶颈&#xff0c;优化…

libVLC 音频立体声模式切换

在libVLC中&#xff0c;可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道&#xff0c;例如立体声、左声道、右声道、环绕声等。 /*** Set current audio channel.** \param p_mi media player* \param channel the audio channel…

Java | Leetcode Java题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int n nums.length;int best 10000000;// 枚举 afor (int i 0; i < n; i) {// 保证和上一次枚举的元素不相等if (i > 0 && nums…

【精品整理】最新数据安全评估标准合集

最新数据安全评估标准合集&#xff0c;以下是资料的目录&#xff0c;共12份。如需下载&#xff0c;请前往星球查阅和获取&#xff1a;https://t.zsxq.com/18JrHhWtQ 1、网络安全标准实践指南 2、数据安全风险评估方法 3、个人信息安全影响评估指南 4、数据出境安全评估指南 5、…