当前位置: 首页 > news >正文

java面试题:简化URL

1 问题场景

编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。

注意:字符串长度在 [0, 500000] 范围内。

2 答案

2.1 解决方案一

直接使用String方法解决

    public static String replaceSpaces(String S, int length) {if(S.length()>500000||S.length()<0){return "字符长度超出合理范围";}S = S.substring(0,length).replace(" ","%20");return S;}

进行测试:

package com.example.demo;public class Solution {public static void main(String[] args) {System.out.println(replaceSpaces("               ",5));}public static String replaceSpaces(String S, int length) {if(S.length()>500000||S.length()<0){return "字符长度超出合理范围";}S = S.substring(0,length).replace(" ","%20");return S;}}

2.2 解决方案二

package com.example.demo;public class Solution {public static void main(String[] args) {System.out.println(replaceSpaces("               ",5));}public static String replaceSpaces(String S, int trueLength) {if(S.length()>500000||S.length()<0){return "字符长度超出合理范围";}char[] str = S.toCharArray();int spaceCount = 0, index, i = 0;// 计算空格的数量for (i = 0; i < trueLength; i++) {if (str[i] == ' ') {spaceCount++;}}// 计算替换后的字符串长度index = trueLength + spaceCount * 2;// 计算替换后的字符串长度index = trueLength + spaceCount * 2;// 从后向前操作,进行替换if (trueLength < str.length) str[trueLength] = '\0'; // 标记实际结束位置for (i = trueLength - 1; i >= 0; i--) {if (str[i] == ' ') {str[index - 1] = '0';str[index - 2] = '2';str[index - 3] = '%';index = index - 3;} else {str[index - 1] = str[i];index--;}}return new String(str);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SqlServer 按时间-日期自动分表
  • 【人工智能】人工智能可解释性和透明度的详细探讨
  • C# 串口通讯怎么防止数据丢失
  • C语言:设计模式
  • 嵌入式 Linux 系统中的常用文件系统及应用场景
  • 数理基础知识
  • vue3中图片引入
  • Apache Curator 创建节点时,如果节点存储就会抛出异常吗?
  • 正点原子imx6ull-mini-Linux驱动之Linux IIO 驱动实验
  • 计算机网络408考研 2021
  • C++ Rect And Point Search Algorithm
  • CORS与JSONP漏洞原理及其复现
  • 模拟退火的
  • WebRTC ICE配置类型
  • MySQL使用(表)
  • 《深入 React 技术栈》
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 2018一半小结一波
  • js
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 将回调地狱按在地上摩擦的Promise
  • 力扣(LeetCode)21
  • 力扣(LeetCode)56
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前嗅ForeSpider中数据浏览界面介绍
  • 删除表内多余的重复数据
  • 听说你叫Java(二)–Servlet请求
  • 我的业余项目总结
  • 自动记录MySQL慢查询快照脚本
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ${ }的特别功能
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (7) cmake 编译C++程序(二)
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (六)激光线扫描-三维重建
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)四层和七层负载均衡的区别
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET MVC之AOP
  • .NET 回调、接口回调、 委托
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET的微型Web框架 Nancy
  • .net开发日常笔记(持续更新)
  • @NotNull、@NotEmpty 和 @NotBlank 区别