`

Airbnb Interview - Nested Integer List Parser

 
阅读更多

实现一个mini parser, 输入是以下格式的string:"324" or"[123,456,[788,799,833],[[]],10,[]]"
要求输出:324 or [123,456,[788,799,833],[[]],10,[]].
也就是将字符串转换成对应的格式的数据.

输入一个数组的字符串, 要返回一个数组, 里面每一个元素是要么一个整数, 要么是一个数组.

但是注意数组可以多层嵌套. 

 

Solution:

public class NestedIntList {

	private int value;
	private List<NestedIntList> intList;
	private boolean isNumber;
	
	public NestedIntList(int v) {
		this.value = v;
		this.isNumber = true;
	}
	
	public NestedIntList() {
		this.intList = new ArrayList<>();
		this.isNumber = false;
	}
	
	public void add(NestedIntList l) {
		intList.add(l);
	}
	
	public static NestedIntList fromString(String s) {
		if(!s.startsWith("[")) {
			return new NestedIntList(Integer.parseInt(s));
		}
		NestedIntList result = null;
		Stack<NestedIntList> stack = new Stack<>();
		int i = 0, left = 1;
		while(i < s.length()) {
			char c = s.charAt(i);
			if(c == '[') {
				NestedIntList num = new NestedIntList();
				if(!stack.isEmpty()) {
					stack.peek().add(num);
				}
				stack.push(num);
				left = i+1;
			} else if(c == ',' || c == ']') {
				if(left != i) {
					int v = Integer.parseInt(s.substring(left, i));
					NestedIntList num = new NestedIntList(v);
					stack.peek().add(num);
				}
				left = i+1;
				if(c == ']') result = stack.pop();
			} 
			i++;
		}
		return result;
	}
	
	public String toString() {
		if(isNumber) {
			return ""+value;
		} else {
			return intList.toString();
		}
	}
	
	public static void main(String[] args) {
		NestedIntList list = NestedIntList.fromString("[123,456,[788,799,833],[[]],10,[]]");
		System.out.println(list);
	}
}

 

 

分享到:
评论

相关推荐

    纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip

    纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip纽约Airbnb数据挖掘-new-york-city-airbnb-...

    前端开源库-eslint-config-airbnb-typescript

    `eslint-config-airbnb-typescript`则是`ESLint`的一个配置集,它扩展了著名的`Airbnb`编码风格指南,特别针对`TypeScript`进行了优化。 `Airbnb`是一家知名的创业公司,它的开源代码风格指南在前端社区广泛使用。`...

    04纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip

    本项目聚焦于"04纽约Airbnb数据挖掘-new-york-city-airbnb-open-data.zip",这是一个公开的数据集,其中包含了纽约市Airbnb(一种在线短租平台)在2019年的详细信息,为研究者和分析师提供了丰富的素材进行深入的...

    eslint-config-airbnb-typescript:支持TypeScript的Airbnb的ESLint配置

    eslint-config-airbnb-typescript 支持TypeScript的Airbnb的ESLint配置 设置 1)安装 npm install eslint-config-airbnb-typescript --save-dev 2)安装ESLint插件 此配置使用的ESLint插件也必须安装在您的项目中。...

    airbnb-data-science-master.rar

    "airbnb-data-science-master"项目为我们揭示了Airbnb如何运用数据科学优化业务、提升用户体验。该项目包含了丰富的源码,让我们有机会深入了解数据科学在实际业务中的应用。 1. 数据科学流程概述 Airbnbs的数据...

    vueeslintparservue文件的ESLint自定义解析器

    extends: ['airbnb-base', 'plugin:vue/recommended'], // 使用 airbnb 配置并添加 Vue.js 的推荐规则 }; ``` `mysticatea-vue-eslint-parser-9d32333` 这个文件可能是 `vue-eslint-parser` 的一个特定版本或分支...

    Kaggle竞赛-Airbnb 新用户的民宿预定预测-数据集

    在本项目中,我们面临的是一个典型的数据挖掘挑战——预测Airbnb新用户的民宿预定行为。Kaggle竞赛提供了丰富的数据集来帮助参赛者构建模型,理解用户行为,并预测未来的预定趋势。以下是各文件的主要内容及可能涉及...

    airbnb-clone, 使用 Rails Trieu的教程克隆 Airbnb.zip

    airbnb-clone, 使用 Rails Trieu的教程克隆 Airbnb 使用 Rails 克隆 Airbnb Trieu教程访问 https://code4startup.com/projects/airalien-clone-airbnb-with-ruby-on-rails-bootstrap-jque

    Airbnb-杜奕凡-Airbnb实时流计算的架构与演进.pdf

    Airbnb-杜奕凡-Airbnb实时流计算的架构与演进

    eslint-config-airbnb-typescript-prettier:具有TypeScript和Prettier支持的Airbnb的ESLint配置

    eslint-config-airbnb-typescript-prettier 具有TypeScript和Prettier支持的Airbnb的ESLint配置。如何使用安装typescript , eslint和prettier , eslint-config-airbnb-typescript-prettier ,并把它放到你的....

    vue-airbnb-style-datepicker:具有与流行的AirBnb datepicker相似的外观和功能的VueJs datepicker

    Vue-Airbnb风格的日期选择器 这是流行的AirBnb日期选择器的VueJs版本。 支持范围选择,日期禁用,自定义配置以及更多其他功能。 真正的轻量级和良好的浏览器支持! 文献资料 浏览器支持 此日期选择器已通过以下...

    tslint-config-airbnb, Airbnb JavaScript风格的TSLint配置.zip

    tslint-config-airbnb, Airbnb JavaScript风格的TSLint配置 TSLint配置 Airbnb 一个用于Airbnb的TSLint配置安装npm install tslint-config-airbnb --save用法在 tslint.json 中:{ "ext

    holbertonschool-higher_level_programming:Python

    AirBnB克隆-RESTful API。 永远不会忘记测试使用cURL进行调试引入方式:0x10。 Python-网络#0。 Python包引入方式为:0x00。 AirBnB克隆-控制台,0x02。 AirBnB克隆-MySQL。 JavaScript程式设计AirBnB克隆引入方式...

    airbnb-react:Airbnb克隆-使用ReactJS构建

    空气React This is a React warmup session on how to implement search with GoogleMapReact. Airbnb is the use case 前端用户界面 学分 首席技术官SébastienSaunier

    Airbnb-Paris---DataScience:Airbnb官方数据

    标题 "Airbnb-Paris---DataScience:Airbnb官方数据" 提供了我们即将探讨的主题,即关于Airbnb在巴黎的数据科学分析。Airbnb是全球知名的在线住宿预订平台,其业务覆盖全球众多城市,包括巴黎。这个项目可能涉及利用...

    AirBnB_clone:0x00。 AirBnB克隆-控制台

    【AirBnB_clone:0x00。 AirBnB克隆-控制台】 AirBnB_clone项目是一个基于Python编程语言的实践项目,旨在模仿著名短租平台Airbnb的功能,提供一个基本的控制台界面供用户进行交互。这个项目可以帮助开发者提升在...

    matlabsvr代码-Airbnb-price-prediction:Airbnb-价格预测

    【文件名称列表】"Airbnb-price-prediction-master"表明压缩包包含的是项目的主分支,通常在Git版本控制系统中,master分支代表了项目的主线。这个目录很可能包含了项目的源代码、数据集、README文件(描述项目目的...

    eslint-config-airbnb-ts:对Airbnb的eslint配置的打字稿支持

    eslint-config-airbnb-ts 具有TypeScript支持的Airbnb ESLint配置的Monorepo:附加文件 学分由马特·特恩布尔撰写( / ) 由Anders Nilsson( nilssonanders79@gmail.com )维护非常感谢所有贡献者! 执照开源许可为...

    AirBnb-ionic-app

    【标题】"AirBnb-ionic-app"是一个基于Ionic框架构建的应用程序,它可能是模仿知名的住宿分享平台Airbnb的一个示例项目。这个项目利用了TypeScript语言的优势,为移动设备提供了一个跨平台的用户界面。 【描述】...

Global site tag (gtag.js) - Google Analytics