正在刷DEV-C++的题目,有一道题是这样的,求大神解惑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正在刷DEV-C++的题目,有一道题是这样的,求大神解惑相关的知识,希望对你有一定的参考价值。

我的理解:仅对黑板上的原来的3个数操作和比较,后续添上去的不加入,是吗?!

#include "stdafx.h"

#include <iostream>

using namespace std;


int cal(int x, int y,int z)

int m = fabs(x - y);

if (m != x&&m != y&&m != z)

return 1;

else

return 0;

int main()

int a, b, c,count;

cin >> a >> b >> c;

count = cal(a, b, c) + cal(a, c, b) + cal(b, c, a);

cout << count << endl;

system("pause");

    return 0;

参考技术A int AdjuctSize(vector<int>& vec, int &len)

vector<int> dst = vec;
for(int i = 0; i < vec.size(); i++)
for(int j = i+1; j < vec.size(); j++)
int absv = abs(vec[i] - vec[j]);
vector<int>::iterator result = find( dst.begin(), dst.end( ), absv );
if (result == dst.end())
dst.push_back(absv);




if(dst.size() == vec.size())
len = dst.size();
return 0;

AdjuctSize(dst, len);


int main()

vector<int> num;
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
num.push_back(a);
num.push_back(b);
num.push_back(c);
int len = 0;
AdjuctSize(num, len);
cout << "len is " << len - 3 << endl;
return 0;

Airbnb coding面的一道编程题

之前在直播的时候Airbnb负责人说他们的coding题难度不会到dp,我就知道肯定是一些字符串处理啥的编程题了。

果然,Airbnb的coding面是在codePad上手写代码,面试官希望能看到你书写的过程,所以少用本地ide(呵呵,不调试让写编程题是最XX的,所以有些东西你需要及时沟通)

自己给的三四个test case,要求输出对应的结果就行了(比ACM是相当宽松了)。

题目是这样的,很简单:

有这样的文本(我转js的字符串了)

let str1 = 'rwer321,dad,adas,ytruty,yihgf';
let str2 = '"ha,ua",sa,da,""da,da"",dad';
let str3 = 'dasd,""asddad"",fsfsf,gdfg,1';
let str4 = '"ha,ua",sa,da,"""da,da""",dad

要求对应转换成这样的:

rwer321|dad|adas|ytruty|yihgf
ha,ua|sa|da|"da,da"|dad
dasd|"asddad"|fsfsf|gdfg|1
ha,ua|sa|da|""da,da""|dad

本意就是单词分词,逗号分开每个单词,但是用引号包围的是一个整体单词,不能随便用逗号分开,如果超过一双引号以上,去掉一层引号引导,剩下的是一个整体,相当于把引号转义称文本单词中的一部分。

一开始思路受到之前项目的影响,之前写亲测模版的时候用到很多正则表达式,于是这里也想用正则,但是是走不通的(事后我用正则想了几个小时,还是不能适用这道题的所有情况)。所以老老实实当作字符串题目来做。

C++很久没写了,不现查C++的api就写不了,所以现在完全是入了js的坑了。其实感觉js写起来更顺畅一些,因为函数库和字符串没C++那么复杂。

我的代码,线性时间复杂度,用deep记录下引号的深度同时记录单词的起始位置和终止位置,分好情况即可:

let str1 = 'rwer321,dad,adas,ytruty,yihgf';
let str2 = '"ha,ua",sa,da,""da,da"",dad';
let str3 = 'dasd,""asddad"",fsfsf,gdfg,1';
let str4 = '"ha,ua",sa,da,"""da,da""",dad'

function done(str) {
    str += ',';
    let len = str.length;
    let deep = 0;
    let flag = 0;
    let start = 0;
    let end = 0;
    let res = [];
    let pos = 0;
    while (pos < len) {
        if (str[pos] === '"'&&flag!==1) {
            flag = 1;
            start = pos;
            while(str[pos]==='"') {
                deep++;
                pos++;
            }
        }else if(str[pos]==='"'&& flag===1) {
            res.push(str.slice(start+1,pos+deep-1));
            pos+=deep;
            start = pos+1;
            deep=0;
            flag=0;
        }else if(str[pos]===','&&flag===0) {
            res.push(str.slice(start,pos));
            start = pos+1;
        }
        pos++;
    }
    res = res.join("|");
    return res;
}

console.log(done(str1));
console.log(done(str2));
console.log(done(str3));
console.log(done(str4));

之前用正则去做,走不通,麻烦有人用正则做出来了通知我一下,谢谢。


let str1 = 'rwer321,dad,adas,ytruty,yihgf';
let str2 = '"hfg,utyut",sasa,dadas,""dada,dasd"",dad';
let str3 = 'dasd,""asddad"",fsfsf,gdfg,1';



// dada, adads|dada|dasd
// dasd|"asddad"|fsfsf|gdfg|1

function done(str) {
  let res = [];
  str += ",";


  let Pa1 = /""([^"]+)""/;
  let re1 = new RegExp(Pa1,'g');
  let ans1 = str.match(re1);
  console.log(ans1);
  if(ans1.length!==null) {
    ans1.map(function(d,i){
      // console.log(d);
      // d = d.replace(",","^001");
      // console.log(d);
      str = str.replace(d+",", d.slice(1,-1)+"|");
    });
  };

  let Pa2 = /"([^"]+)",/;
  let re2 = new RegExp(Pa2,'g');
  let ans2 = str.match(re2);
  console.log(ans2);
  
  if(ans2.length!==null) {
    ans2.map(function(d,i){
      // d = d.replace(",","^001");
      str = str.replace(d,d.slice(1,-2)+"|");
    });
  };

  // let Pa3 = /[^"|]+,/;
  // let re3 = new RegExp(Pa3,'g');
  // let ans3 = str.match(re3);
  // console.log(ans3);
  
  // if(ans3.length!==null) {
  //   ans3.map(function(d,i){
  //     str = str.replace(d,d.slice(1,-2)+"|");
  //   });
  // };
  // console.log(str);
  // str.split(',').map(function(d,i) {
  //   res.push(d);
  // });
  // let ans = res.join('|');


  // console.log(str);

  // let re = new RegExp(Pattern,'g');
  // let Pattern = /"(.*)"/;

  // let re = new RegExp(Pattern,'g');

  // let tmp;
  // let res = str.split(',').map(function(d,i) {
  //   let flag = 0;
  //   let len = d.length;
  //   if(d[len-1]==='"') {
  //     tmp += d;
  //     flag = 1;
  //   }
  //   if(flag) {
  //     return tmp.slice(1,-1);
  //   }
  //   tmp = d;
  //   if(d[0]!=='"') {
  //     return d;
  //   }
  // });

  // let len = str.length;
  // for(let i = 0; i < len; i++) {

  // }
  console.log(str);
}

done(str2);

以上是关于正在刷DEV-C++的题目,有一道题是这样的,求大神解惑的主要内容,如果未能解决你的问题,请参考以下文章

为啥手机出来的是一行英文LK(little kernel)ver sep 9 2011 为啥是这样啊???求大神啊

Airbnb coding面的一道编程题

力扣刷题感受

「二分查找」之我见!今天刷一道leetcode算法!

论JDK源码的重要性:一道面试题引发的无限思考

白菜刷LeetCode记-46. Permutations