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

在做题中学习(63):替换问号

解法:模拟

题意:修改问号时,不能和前面一样,不能和后面一样。

所以可以在一个小写字母的循环中通过判断来修改值。

细节

先看一下下面的代码行不行:

for(char a = 'a';a<='z';a++)
{if(a!=s[i-1] && a!=s[i+1]){s[i] = a;break;}}

答案是不行,因为判断时有越界访问情况:

比如示例一:在判断 a!=s[i-1]时,s[i]此时是'?',是首元素在 i == 0下标的位置,s[i-1]就会越界。

而问号在最后 n-1 下标的位置,也会越界,所以需要一起判断。

class Solution 
{
public:string modifyString(string s) {int n = s.size();for(int i = 0;i<n;i++){if(s[i] == '?'){for(char a = 'a';a<='z';a++){if((i==0 || a!=s[i-1]) && (i==n-1 || a!=s[i+1])){s[i] = a;break;}}}}return s;}
};

用上 || 是因为如果 '?'在中间,也可以保证逻辑正确。


http://www.mrgr.cn/news/55375.html

相关文章:

  • C++面向对象编程学习
  • 【Golang】合理运用泛型,简化开发流程
  • Synopsys工具中命令中filter选项
  • 技术方向简介
  • C语言作业day8
  • 近似推断 - 引言篇
  • vue3学习记录-TransitionGroup
  • 携手并进,智驭教育!和鲸科技与智谱 AI 签署“101 数智领航计划”战略合作协议
  • GB28181协议视频监控平台-鉴权的含义
  • Java 当中使用 “google.zxing ”开源项目 和 “github 的 qrcode-plugin” 开源项目 生成二维码
  • 【04】双样本等方差(t-检验)
  • P3137 [USACO16FEB] Circular Barn S
  • 全面了解 NGINX 的负载均衡算法
  • c语言基础程序——经典100道实例(二)
  • 中电金信重磅发布《金融数据安全治理白皮书》
  • 百度地图引入个性化样式,加载时出现大片白块的解决办法
  • 数据中心母线槽测温监控装置的优势和如何选型
  • Java 创建图形用户界面(GUI)组件详解之下拉式菜单(JMenu、JMenuItem)、弹出式菜单(JPopupMenu)等
  • 协议 MQTT
  • 国产操作系统的介绍与试用
  • 【ios】使用TestFlight将app分发给测试人员(超详细)
  • 微信小程序实现canvas电子签名
  • intel和AMD突然联姻,这操作给我看傻了
  • 移除Microsoft Edge浏览器“由你的组织管理“提示的方法
  • springboot图书馆座位预约系统-计算机毕业设计源码85670
  • Vue 变量关键字,var、let 和 const区别