博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
821. Shortest Distance to a Character
阅读量:6602 次
发布时间:2019-06-24

本文共 1788 字,大约阅读时间需要 5 分钟。

题目描述:

Given a string S and a character C, return an array of integers representing the shortest distance from the character C in the string.

Example 1:

Input: S = "loveleetcode", C = 'e'Output: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

 

Note:

  1. S string length is in [1, 10000].
  2. C is a single character, and guaranteed to be in string S.
  3. All letters in S and C are lowercase.

解题思路:

一直想有没有什么简便的方法,没想出来,就用了笨方法。

代码:

1 class Solution { 2 public: 3     vector
shortestToChar(string S, char C) { 4 vector
res; 5 for (int i = 0; i < S.size(); i++) { 6 if (S[i] == C) 7 index.push_back(i); 8 } 9 for (int i = 0; i < S.size(); ++i){10 int length = INT_MAX;11 if (S[i] == C) {12 res.push_back(0);13 continue;14 }15 for (int j = 0; j < index.size(); ++j) {16 if (abs(index[j] - i ) < length)17 length = abs(index[j] - i);18 else19 break;20 }21 res.push_back(length);22 }23 return res;24 25 }26 vector
index;27 };

 


PS:

 

看了其他人的解法,有一方法很棒,分享下:

1 vector
shortestToChar(const string& s, char c) { 2 int size = s.size(), lastLocation = -1; 3 vector
ret (size, INT_MAX); 4 for (int i = 0; i < size; ++i) { 5 if (s[i] == c) lastLocation = i; 6 if (lastLocation != -1) ret[i] = i - lastLocation; 7 } 8 for (int i = lastLocation - 1; i >= 0; --i) { 9 if (s[i] == c) lastLocation = i;10 ret[i] = min(lastLocation - i, ret[i]);11 }12 return ret;13 }

 

转载于:https://www.cnblogs.com/gsz-/p/9470632.html

你可能感兴趣的文章
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
建站心得之discuz门户程序相比ZBLOG具有哪些优势[图]
查看>>
编程之美 测试赛 石头剪刀布
查看>>
签名问题
查看>>
软件开发各阶段交付物列表
查看>>
2018-05-24 Linux学习
查看>>
ntp服务器的搭建
查看>>
我的友情链接
查看>>
sysstat 安装
查看>>
《你必须知道的.NET》 - 书摘精要
查看>>
六、nginx搭建织梦DedeCms网站
查看>>
Tair学习小记
查看>>
网卡绑定(服务器&&交换机),缓存服务器Squid架构配置
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
Redis 数据结构-字符串源码分析
查看>>
打算写一款框架来提高自己 写个结构吧
查看>>
这世界就是,一些人总在昼夜不停地运转,而另外一些人,起床就发现世界已经变了。...
查看>>
网页设置
查看>>
Ubuntu 操作系统操作
查看>>
vue学习:10、第一个项目,实践中遇到的问题
查看>>