楼主: seuzbw
跳转到指定楼层
上一主题 下一主题
收起左侧

求问amazon OA2 C++相关问题

🔗
 楼主| seuzbw 2016-10-8 12:43:46 | 只看该作者
全局:
yangmyfly 发表于 2016-10-8 12:13
想问下能把char* 转成string做 再转回去, 用c_str 或者 data()? 楼主是直接用c的那些函数做的,还是怎样?
  1. char* findLP(char* s){
  2.         int len = strlen(s);
  3.         vector<int> axis(len,0);
  4.         int rightMostPivot = 0;
  5.         int curRightMost = 0;
  6.         for(int i=0;i<len;i++){
  7.             axis[i] = i<curRightMost ? std::min(curRightMost-i,axis[2*rightMostPivot-i]) : 0;
  8.             while(i-axis[i]-1>=0 && i+axis[i]+1<len && s[i-axis[i]-1] == s[i+axis[i] + 1]){
  9.                 axis[i]++;
  10.             }
  11.             if(i+axis[i]>curRightMost){
  12.                 curRightMost = i+axis[i];
  13.                 rightMostPivot = i;
  14.             }
  15.         }
  16.         int maxPivot = 0;
  17.         for(int i=0 ; i<len; i++) maxPivot = axis[i]>axis[maxPivot]?i:maxPivot;
  18.         char* ret = new char[axis[maxPivot]+1];
  19.         for(int i = maxPivot-axis[maxPivot]+1, j=0;i<maxPivot+axis[maxPivot];i+=2,j++){
  20.             ret[j] = s[i];
  21.         }
  22.         ret[axis[maxPivot]] = '\0';
  23.         return ret;
  24.     }
  25.    
  26.     char* longestPalindrome(char* s) {
  27.         int len = strlen(s);
  28.         char* transformStr = new char[2*len+2];
  29.         transformStr[0] = '#';
  30.         transformStr[2*len+1] = '\0';
  31.         for(int i=0; i<len; i++){
  32.             transformStr[2*i+1] = s[i];
  33.             transformStr[2*i+2] = '#';
  34.         }
  35.         return findLP(transformStr);
  36.     }
复制代码
回复

使用道具 举报

🔗
yangmyfly 2016-10-9 03:07:20 | 只看该作者
全局:

谢楼主, 楼主用O(n)的方法非常好啊。 目前有消息吗? 还是想问下能不能使用string呢,相对更习惯用string
回复

使用道具 举报

🔗
matrixmaster 2016-10-9 03:14:17 | 只看该作者
全局:
请问下,std::make_heap(), std::push_heap(), std::pop_heap()可以用吗
回复

使用道具 举报

🔗
 楼主| seuzbw 2016-10-9 03:17:04 | 只看该作者
全局:
yangmyfly 发表于 2016-10-9 03:07
谢楼主, 楼主用O(n)的方法非常好啊。 目前有消息吗? 还是想问下能不能使用string呢,相对更习惯用strin ...

string构造和c_str肯定是可以的,但肯定效率低了,不过amazon OA貌似不考虑效率,做对就行
我过几天onsite
回复

使用道具 举报

🔗
 楼主| seuzbw 2016-10-9 03:20:08 | 只看该作者
全局:
matrixmaster 发表于 2016-10-9 03:14
请问下,std::make_heap(), std::push_heap(), std::pop_heap()可以用吗

sort都不给用,其他algorithm函数估计更不行了吧 你可以到时候试一下呗
而且要注意amazon的OA平台是C++98   
回复

使用道具 举报

🔗
yangmyfly 2016-10-9 03:24:15 | 只看该作者
全局:
seuzbw 发表于 2016-10-9 03:17
string构造和c_str肯定是可以的,但肯定效率低了,不过amazon OA貌似不考虑效率,做对就行
我过几天onsi ...

嗯嗯,多谢楼主!听说他家onsite对c++很不友好,貌似用java好些?
回复

使用道具 举报

🔗
matrixmaster 2016-10-9 03:24:30 | 只看该作者
全局:
seuzbw 发表于 2016-10-9 03:20
sort都不给用,其他algorithm函数估计更不行了吧 你可以到时候试一下呗
而且要注意amazon的OA平台是C++9 ...

多谢回答!
回复

使用道具 举报

🔗
 楼主| seuzbw 2016-10-9 03:29:49 | 只看该作者
全局:
yangmyfly 发表于 2016-10-9 03:24
嗯嗯,多谢楼主!听说他家onsite对c++很不友好,貌似用java好些?

是这样的 听说onsite也很不友好 编译都可能有问题...
回复

使用道具 举报

🔗
 楼主| seuzbw 2016-10-9 03:35:12 | 只看该作者
全局:
yangmyfly 发表于 2016-10-9 03:07
谢楼主, 楼主用O(n)的方法非常好啊。 目前有消息吗? 还是想问下能不能使用string呢,相对更习惯用strin ...

这个问题我突然想到我可能理解错了 我以为你问我理论上能不能这么做 但你应该是问的amazon的平台给不给用string 这个我还真不确定了。。。
string应该是C++98的东西,但不知道amazon会不会用别的方法禁用掉。。。。
回复

使用道具 举报

🔗
yangmyfly 2016-10-9 03:38:41 | 只看该作者
全局:
seuzbw 发表于 2016-10-9 03:35
这个问题我突然想到我可能理解错了 我以为你问我理论上能不能这么做 但你应该是问的amazon的平台给不给用 ...

好吧,多谢楼主,感觉要突击java了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表